Я использую CGridView с CActiveDataProvider. Все работает нормально, но теперь мне нужно показать пользовательскую кнопку в зависимости от идентификатора строки.
Я могу добавить кнопку и заставить ее работать, однако я не могу настроить изображение в соответствии с идентификатором строки.
Из примеров видно, что при создании URL я могу получить доступ к идентификатору строки, вызвав $ data-> id, однако, когда я пытаюсь сделать это для imageURL, это не работает. Мой код ниже:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'name',
'desc',
'created',
array(
'class'=>'CButtonColumn',
'header'=>'Active State',
'template'=>'{rank}',
'buttons'=>array(
'rank'=>array(
'label'=>'Rank',
'imageUrl'=>$this->getRank($data->id),
'url'=>'Yii::app()->createUrl("users/updateRank", array("id"=>$data->id))',
'options'=>array(
'ajax'=>array(
'type'=>'POST',
'url'=>"js:$(this).attr('href')",
),
),
),
),
),
),
));
URL-адрес изображения вызывает функцию в моем контроллере, которая возвращает URL-адрес изображения. Однако я не могу передать идентификатор текущей записи, на которую нажимает пользователь, и я всегда получаю изображение по умолчанию.
Если я использую $ data-> id, я получаю сообщение об ошибке, что данные не существуют.
Если я использую $ this-> id, это относится к контроллеру, и я получаю идентификатор контроллера. В любом случае я могу получить идентификатор строки и передать его функции.