Изучаю пример создания блога в yii.
Имеем такую вот последовательность действий:
1.
[b]$dataProvider=new CActiveDataProvider(‘Post’);
$this->render('index',array('dataProvider'=>$dataProvider,)
);[/b]
Здесь все относительно ясно - представление index рендится множеством записей таблицы Post.
По видимому, функция render() сама организовывает цикл на множестве записей, а может и не сама,
пока это не важно для понимания.
2. Открываем представление index:
[b]<?php $this->widget(‘zii.widgets.CListView’, array(‘dataProvider’=>$dataProvider,‘itemView’=>’_view’,)
); ?>[/b]
Здесь виджету передается переменная $dataProvider и уж он точно организовывает цикл по множеству
записей, каждую из которых выводит в предварительный шаблон используя представление _view.
3. Открываем представление _view:
[b]<b><?php echo CHtml::encode($data->getAttributeLabel(‘id’)); ?>:</b>
<?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?>
<br />[/b]
…
…
…
Понятно, что в представление _view для поступившей на вход конкретной записи таблицы Post
формируется отображение для браузера типа-
атрибут1 = значение
атрибут2 = значение
…
…
Ясно, что getAttributeLabel() - родительский метод модели Post,
а $data - представляет очередной экземпляр записи.
[color="#FF0000"][b]Вопрос такой - где происходит определение переменной $data, т.е. кто и где
ее вводит и присваивает ей в качестве значения экземпляр записи таблицы Post ?[/b]
[/color]
Эта переменная принадлежит контроллеру PostController, но где она получает значение ?