我正在使用CGctiveView和CActiveDataProvider。一切工作正常,但現在我需要顯示一個自定義按鈕取決於行的ID。Yii CGridView如何訪問每列的ID
我可以添加按鈕並讓它工作,但是我無法根據行ID自定義圖像。 我可以從示例中看到,創建url時,我可以通過調用$ data-> id來訪問行的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到圖像調用一個函數。然而,我無法通過當前記錄用戶點擊的ID,我總是得到默認圖像回來。 如果我使用$ data-> id,則會出現數據不存在的錯誤。 如果我使用$ this-> id它指的是控制器,我得到了控制器ID。無論如何,我可以得到該行的id並將其傳遞給函數。
如果我添加引號IMAGEURL簡直變成「$這個 - > getRank($數據 - > ID)」但是,如果我離開他們出了功能不被調用,但我不;知道如何傳遞變量。我關於報價採取你的觀點,但它不起作用。 – Orlymee 2012-02-28 00:07:58
好的,對不起 - 現在我看到它在「按鈕」數組內。該手冊說,必須有一個圖像的URL(不是PHP表達式),所以看起來,這是不可能的CButtonColumn這樣的方式,例如不能有不同的圖像爲同一個按鈕(除非你寫一個擴展名'糾正'它)。 http://www.yiiframework.com/doc/api/1.1/CButtonColumn#buttons-detail – zuups 2012-02-28 01:22:25
謝謝kraabus,我再次通過文檔,你是對的,它被設置爲字符串而不是php表達式。因此,我使用了一個CDataColumn,它的值屬性調用了我的函數,它將完整的內容返回到列,即具有正確鏈接的圖像。謝謝。明天將發佈完整的解決方案。 – Orlymee 2012-02-28 02:09:17