我有一个Yii 1应用程序,我想根据'status'列更改TbGridView列的行为。如果我的状态是'Y',我想在TbButtonColumn上调用一个URL。如果是'N',请更改TbButtonColumn的标题和网址。 有可能吗?
我的代码:
$this->widget('bootstrap.widgets.TbGridView',array(
'id'=>'my-grid',
'dataProvider'=>$dataProvider,
'columns'=>array(
'id',
'description',
status, // <--- This here can be 'Y' or 'N'. Based on this column I want to change Options column behavior.
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
'template'=>'{Do Something}',
'buttons'=>array
(
'Do Something' => array
(
'url'=>'Yii::app()->createUrl("myUrlForY", array("somedata"=>$data->somedata))',
),
),
'htmlOptions'=>array('style'=>'width: 20px'),
),
),
));
答案 0 :(得分:1)
您可以将php表达式传递到url
的{{1}}属性,并且TbButtonColumn
引用当前模型,您可以通过$data
访问status
:
$data->status
如果url参数相同,甚至更短:
'url' => '$data->status == "Y" ?
Yii::app()->createUrl("myUrlForY", array("somedata" => $data->somedata)) :
Yii::app()->createUrl("myUrlForN", array("somedata" => $data->somedata))',
甚至更短,因为如果传递给'url' => 'Yii::app()->createUrl(
($data->status == "Y" ? "myUrlForY" : "myUrlForN"),
array("somedata" => $data->somedata)
)',
的表达式是一个数组,则在内部创建一个url:
url