Yii - 基于其他数据,动态更改TbGridView选项行为

时间:2016-11-29 17:43:27

标签: php yii

我有一个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'),
    ),
),

));

1 个答案:

答案 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