orlymee Posted February 27, 2012 Share Posted February 27, 2012 I am using a CGridView with CActiveDataProvider. Everything works fine however now I have a need to show a custom button depending upon the id of the row. I can add the button and get it to work as well however I cannot customise the image according to the row id. I can see from examples that when creating url I can access the id of row by calling $data->id however when I try to do that for imageURL it does not work. My code is below: $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')", ), ), ), ), ), ), )); Image URL calls a function in my controller which returns a url to the image. However I cannot pass the id of the current record user is clicking upon and I always get the default image back. If I use $data->id I get an error that data does not exist. If I use $this->id it is referring to the controller and I get the controller id. Anyway I can get the id of the row and pass it over to a function. Link to comment Share on other sites More sharing options...
Larry Posted February 29, 2012 Share Posted February 29, 2012 I don't know offhand if the value for imageUrl can be determined dynamically, but if you look at the following line, which assigns a value to url, that line quotes the code to be executed. You should try that. Link to comment Share on other sites More sharing options...
Recommended Posts