Eval()'d Code(1)

I developed an website using my ubuntu linux server running wihtin VMware (PHP Version 5.2.10-2). I just uploaded everything to my hosting (PHP Version 5.2.17) and I get the following error. This page is running fine on my virtual development machine…

I’m running on both machina yii-1.1.12.b600af.

Any ideas?

Thank you i nadvanced.

Error code:




PHP notice


Trying to get property of non-object


/home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/base/CComponent.php(607) : eval()'d code(1)

Stack Trace

#0 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/base/CComponent.php(607): eval()

#1 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/zii/widgets/grid/CDataColumn.php(132): CComponent->evaluateExpression("$data->city->city", array("data" => Restaurant, "row" => 10))

#2 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/zii/widgets/grid/CGridColumn.php(145): CDataColumn->renderDataCellContent(10, Restaurant)

#3 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/zii/widgets/grid/CGridView.php(546): CGridColumn->renderDataCell(10)

#4 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/zii/widgets/grid/CGridView.php(517): CGridView->renderTableRow(10)

#5 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/zii/widgets/grid/CGridView.php(427): CGridView->renderTableBody()

#6 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/zii/widgets/CBaseListView.php(161): CGridView->renderItems()

#7 	

 unknown(0): CBaseListView->renderSection(array("{items}", "items"))

#8 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/zii/widgets/CBaseListView.php(144): preg_replace_callback("/{(\w+)}/", array(CGridView, "renderSection"), "{summary} {items} {pager}")

#9 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/zii/widgets/CBaseListView.php(129): CBaseListView->renderContent()

#10 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CBaseController.php(174): CBaseListView->run()

#11 	

–

 /home/repsite/domains/daytrip10.under.nl/private_html/protected/views/restaurant/admin.php(61): CBaseController->widget("zii.widgets.grid.CGridView", array("id" => "restaurant-grid", "cssFile" => "/css/admin/gridview.css", "dataProvider" => MyActiveDataProvider, "filter" => Restaurant, ...))


56         'active',

57         array(

58             'class'=>'CButtonColumn',

59         ),

60     ),

61 )); ?>


#12 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CBaseController.php(127): require("/home/repsite/domains/daytrip10.under.nl/private_html/protected/...")

#13 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CBaseController.php(96): CBaseController->renderInternal("/home/repsite/domains/daytrip10.under.nl/private_html/protected/...", array("model" => Restaurant), true)

#14 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CController.php(870): CBaseController->renderFile("/home/repsite/domains/daytrip10.under.nl/private_html/protected/...", array("model" => Restaurant), true)

#15 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CController.php(783): CController->renderPartial("admin", array("model" => Restaurant), true)

#16 	

–

 /home/repsite/domains/daytrip10.under.nl/private_html/protected/controllers/RestaurantController.php(154): CController->render("admin", array("model" => Restaurant))


149         } else {

150             $page = Yii::app()->user->getState($this->id . '-page', 1);

151             $_GET[$pageParam] = $page;

152         }

153 

154         $this->render('admin',array('model'=>$model));

155     }

156 

157     /**

158      * Returns the data model based on the primary key given in the GET variable.

159      * If the data model is not found, an HTTP exception will be raised.


#17 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/actions/CInlineAction.php(50): RestaurantController->actionAdmin()

#18 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CController.php(309): CInlineAction->runWithParams(array())

#19 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/filters/CFilterChain.php(134): CController->runAction(CInlineAction)

#20 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/filters/CFilter.php(41): CFilterChain->run()

#21 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CController.php(1146): CFilter->filter(CFilterChain)

#22 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/filters/CInlineFilter.php(59): CController->filterAccessControl(CFilterChain)

#23 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/filters/CFilterChain.php(131): CInlineFilter->filter(CFilterChain)

#24 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CController.php(292): CFilterChain->run()

#25 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CController.php(266): CController->runActionWithFilters(CInlineAction, array("accessControl"))

#26 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CWebApplication.php(283): CController->run("admin")

#27 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/web/CWebApplication.php(142): CWebApplication->runController("restaurant/admin")

#28 	

+

 /home/repsite/domains/daytrip10.under.nl/private_html/yii-1.1.12.b600af/base/CApplication.php(162): CWebApplication->processRequest()

#29 	

–

 /home/repsite/domains/daytrip10.under.nl/public_html/index.php(13): CApplication->run()


08 defined('YII_DEBUG') or define('YII_DEBUG',true);

09 // specify how many levels of call stack should be shown in each log message

10 defined('YII_TRACE_LEVEL') or define('YII_TRACE_LEVEL',3);

11 

12 require_once($yii);

13 Yii::createWebApplication($config)->r



change your code


$data->city->city

to


$data->city instanceof City?$data->city->city:'don`t defined'

where


City

your class of relation $data->city

Like this is not working, it gives an Undefined variable: data error for that line.

View: admin.php


<?php $this->widget('zii.widgets.grid.CGridView', array(

	'id'=>'restaurant-grid',

	'cssFile'=>'/css/admin/gridview.css',

	'dataProvider'=>$model->search(),

	'filter'=>$model,

	'columns'=>array(

		'id_restaurant',

		'restaurant',

        array(

            'name' => 'city',

            'value' => $data->city instanceof City?$data->city->city:'don`t defined',

        ),

		array(

			'name'=>'modified',

			'value'=>'date("j M Y",strtotime($data->modified))',

		),

		'active',

		array(

			'class'=>'CButtonColumn',

		),

	),

)); ?>

you forgot to wrap string


$data->city instanceof City?$data->city->city:'don`t defined'

by quotes

:huh: thank you!


'$data->city instanceof City?$data->city->city:"don\'t defined"'

Still weird that it is working in two other admin.php files…

Valeuw me ajudou muito

@rudenich,

Thanks for the answer. I had the same problem and your answer was spot on. Can you please provide the reference to the documentation where I could get more info. I am unable to find any documentation in regards to "instanceof" for $data object of CActiveDataProvider.

http://php.net/instanceof

It just checks to make sure that the variable (or in this case, the relation) you are accessing is actually an instance of whatever it is supposed to be. You could also do a simple null check like:


($data->city !== null) ? $data->city->city: 'n/a';

or


($data->city) ? $data->city->city: 'n/a';

You can also use dot notation and not have to worry about checks like the above:




'columns' => array(

	'city.city',

),