Грид, Как Сделать Условие В Temlpate?

Привет всем! У меня есть таблица и вней одно из полей именовано как closed

Вот мне надо чтоб в гриде, кнопки редактировать/удалить/печать выводились если closrd!=1, а если в строке closed==1 - то только печать

я пробовал так сделать

$this->widget(‘zii.widgets.grid.CGridView’,

array(


    'dataProvider'=>$dataProvider,


    'columns'=>array(


        'date_start',


        'idRoutes.name',


        'idPlane.name',


        'money_total',


        'distance_real',


        'money_total',


        'comment',


        array(


            'header'=>'Действия',


            'class'=>'CButtonColumn',


            [b]'template'=>function($dataProvider){(($dataProvider->closed)?'{print}':'{update} {delete} {print}');},[/b]


            'deleteConfirmation'=>'Вы действительно хотите удалить эту запись?',


            'buttons'=>array(


                'delete' => array(


                    'label'=>'Удалить',


                ),


                'update' => array(


                    'label'=>'Редактировать',


                    //'url'=>'Yii::app()->createUrl("refmomethods/update", array("id"=>$data->id))'





                ),


                'print' => array


                (


                    'label'=>'Печать',


                    'imageUrl'=>Yii::app()->request->baseUrl.'/images/print.png',


                    'url'=>'Yii::app()->createUrl("/operations/waybill/print", array("id"=>$data->id))',


                    'options'=>array('target'=>'_blank'),


                ),


            ),


        ),





    ),


)

);

Но ругается strpos() expects parameter 1 to be string, object given

Заранее спасибо всем, кто поможет!! :rolleyes:

Собственно говоря вы предаете обьект в template.


function ($dataProvider)

насколько я помню это неверно, так как в CGridView свои переменные. Если хотите использовать внешнюю :


function () use $dataProvider{}

или передавать данные для данной строки


function ($data,$row) {return (($data->closed)?'{print}':'{update} {delete} {print}');}

И проверьте что возвращаете именно строку.

Неверный путь Вы выбрали, лучше так:

отпределяете в шаблоне все нужные кнопки:




'template'=>'{update} {delete} {print}'



а потом уже регулируйте отображение кнопок с помощью параметра visible:




'buttons' => array(

	'update' => array(

		'label' => 'Редактировать',

		'visible' => '$data->closed!=1',

	),

	'delete' => array(

		'label' => 'Удалить',

		'visible' => '$data->closed!=1',

	),

	'print' => array

	(

		'label' => 'Печать',

		'imageUrl' => Yii::app()->request->baseUrl . '/images/print.png',

		'url' => 'Yii::app()->createUrl("/operations/waybill/print", array("id"=>$data->id))',

		'options' => array('target' => '_blank'),

		'visible' => true, //выводить всегда

	),

),



О, спасибо огромное Artur Zhdanov!

И Вам, ineersa за то что решили откликнуться на вопрос :)