我正在$data->id
上使用TbButtonColumn
,但我收到错误"Trying to get property of non-object"
。
TbGridView
正常运行!
我做错了什么?
View.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
),
),
),
),
)); ?>
答案 0 :(得分:2)
设置按钮的网址对我有用:
'url'=>'$this->grid->controller->createUrl("update", array(
"id"=>$data->primaryKey))',
答案 1 :(得分: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
实际上是什么 - 它不是一个对象,这是肯定的!
<强>文档强>
is_object
- http://php.net/manual/en/function.is-object.php var_dump
- http://php.net/manual/en/function.var-dump.php