Jump to content
Larry Ullman's Book Forums
Sign in to follow this  
orlymee

Yii Cgridview How To Access Id For Each Column

Recommended Posts

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×