2016-11-29 2 views
0

У меня есть приложение Yii 1, и я хочу изменить поведение столбцов TbGridView на основе столбца «статус». Если мой статус «Y», я хочу называть один URL-адрес на TbButtonColumn. Если это «N», измените заголовок и URL-адрес TbButtonColumn. Возможно ли это?Yii - Динамическое изменение поведения параметров TbGridView на основе других данных

Мой код:

$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

Что вы имеете в виду колонка параметров? Вы имеете в виду 'TbButtonColumn'? – topher

+0

Да @topher, TbButtonColumn –

ответ

1

Вы можете передать PHP выражения в url свойство TbButtonColumn и так $data относится к текущей модели вы можете получить доступ к status через $data->status:

'url' => '$data->status == "Y" ? 
    Yii::app()->createUrl("myUrlForY", array("somedata" => $data->somedata)) : 
    Yii::app()->createUrl("myUrlForN", array("somedata" => $data->somedata))', 

Или еще короче, если параметры URL одинаковы:

Или даже короче, так как если выражение, переданное в url, является массивом, URL-адрес создается внутри:

'url' => 'array(
    ($data->status == "Y" ? "myUrlForY" : "myUrlForN"), 
    array("somedata" => $data->somedata) 
)',