0

我正在尝试使用$data->idonTbButtonColumn但出现错误"Trying to get property of non-object"。工作TbGridView正常!我做错了什么?

查看.php:

<?php  $this->widget('bootstrap.widgets.TbGridView',array(
    'type'=>'striped bordered condensed',
    'id'=>'profiles-grid',
    'dataProvider'=>$dataProvider,
    'columns'=>array(
        'id',
        array(
            'class'=>'bootstrap.widgets.TbButtonColumn',
            'template'=>'{create}',
            'buttons'=>array
            (
                'create' => array(
                    'label'=>'Criar Evento',
                    'icon'=>'plus',
                    'url'=>'Yii::app()->controller->createUrl("events/create", array("id"=>$data->id))', // Problem here on $data->id
                ),
            ),
        ),
    ),
)); ?>
4

2 回答 2

2

像这样设置按钮的网址对我有用:

'url'=>'$this->grid->controller->createUrl("update", array(
            "id"=>$data->primaryKey))',
于 2013-04-15T10:27:18.423 回答
1

您得到的错误是由$data不是对象的事实引起的。您不能->对任何其他变量类型使用属性访问运算符。

从您的问题中不清楚在哪里$data分配了一个值,或者该值应该是什么。is_object您可以使用以下函数确保变量包含对象:

if (!is_object($data))
  die('There seems to be a problem with the data');

这将告诉您这$data不是对象,从而防止错误。但是,我怀疑根本问题是您希望填充$data变量的任何机制都失败了,或者没有按照您期望的方式工作。

您可以使用var_dump调试变量并在过程中检查它们的类型:

var_dump($data);

...这将使您更好地了解$data实际是什么——它不是一个对象,这是肯定的!

文档

于 2013-01-24T19:38:05.210 回答