2013-08-30 158 views
0

所以我放棄了上述所有的和決定搬到我想與阿賈克斯,以顯示在主電網不同的網格colums但出於某種原因,我得到這個錯誤:Yii的CGridView更新

嘗試非對象

/var/www/html/framework/base/CComponent.php(607)的獲取屬性:EVAL()'d代碼(1)

<?php 
$this->breadcrumbs=array(
     'Fund Admin'=>array('/FundAdmin/index/'), 
    'Contract Notes'=>array('index'), 
    'List', 
); 

$user = Yii::app()->user; 

$this->menu=array(
     array('label'=>'Fund Prices', 'url'=>array('/FundPrice/index'), 'visible'=>$user->checkAccess('listFPrice')), 
     array('label'=>'Reports','url'=>array('/FundAdmin/index'), 'visible'=>$user->checkAccess('listReports')), 
    array('label'=>'Create Contract Note', 'url'=>array('create'), 'visible'=>$user->checkAccess('createCNote')), 
    array('label'=>'Audit Contract Note', 'url'=>array('auditList'), 'visible'=>$user->checkAccess('auditListClient')), 
    //array('label'=>'Audit Contract Note Item', 'url'=>array('/ContractNoteItem/auditList'), 'visible'=>$user->checkAccess('auditListClient')), 
); 

Yii::app()->clientScript->registerScript('search', " 
$('.search-button').click(function(){ 
    $('.search-form').toggle(); 
    return false; 
}); 
$('.search-form form').submit(function(){ 
    $.fn.yiiGridView.update('contract-note-grid',{ 
     data: $(this).serialize() 
    }); 
    return false; 
}); 
"); 
?> 



<h1>List Contract Note</h1> 

<p> 
You may optionally enter a comparison operator (<b>&lt;</b>, <b>&lt;=</b>, <b>&gt;</b>, <b>&gt;=</b>, <b>&lt;&gt;</b> 
or <b>=</b>) at the beginning of each of your search values to specify how the comparison should be done. 
</p> 

<?php echo CHtml::link('Advanced Search','#',array('class'=>'search-button')); ?> 
<div class="search-form" style="display:none"> 
<?php $this->renderPartial('_search',array(
    'model'=>$model, 
)); ?> 
</div><!-- search-form --> 

<?php 
//$data=NULL; 
$this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'contract-note-grid', 
    'dataProvider'=>$model->search(), 
    'filter'=>$model, 
    'columns'=>array(   
       array(
        'name'=>'cn_fund_house_id', 
        'type'=>'raw', 
        'value'=>'$data->cnFundHouse->fh_name', 
       ), 
       array(
        'name'=>'contractNoteItems.cni_fund_id', 
        'type'=>'raw', 
        'value'=>'$data->contractNoteItems->f_name', 
     ), 
       array(
        'name'=>'contractNoteItems.cni_isin', 
        'type'=>'raw', 
        'value'=>'$data->contractNoteItems->cni_isin', 
       ), 

       array(
        'name'=>'contractNoteItems.cni_client_account_no', 
        'type'=>'raw', 
        'value'=>'$data->contractNoteItems->cni_client_account_no', 
       ), 

     'cn_investment_date', 
     //'cn_settlement_date', 

     array(
      'class'=>'CButtonColumn', 
         'deleteConfirmation'=>'Are you sure you want to retire this item? 
This item needs to be audited for retirement to take effect.', 
      'template'=>'{view}{update}{delete}', 
      'buttons'=>array(
           'view' => array 
       (
            'label'=>'view', 
            'url'=>'Yii::app()->controller->createUrl("contractNoteItem/view",array("id"=>$data->getCNIid($data->id)))', 
            'visible'=>"Yii::app()->user->checkAccess('editFund')", 
       ), 
       'update' => array 
       (
            'label'=>'edit', 
            'url'=>'Yii::app()->controller->createUrl("edit",array("id"=>$data["id"]))', 
            'visible'=>"Yii::app()->user->checkAccess('editFund')", 
       ), 
       'delete' => array 
       (
            'label'=>'retire', 
            'url'=>'Yii::app()->controller->createUrl("retire",array("id"=>$data["id"]))', 
            'visible'=>'$data->checkIfRetired($data["id"])', 
       ) 
      ) 
     ), 
    ), 
)); 
?> 

和特定錯誤來));在php結束標記之前,所以我不明白。如果我評論除第一個和CButtonColumn數組外的每個數組的'值',我不會收到錯誤,因爲我只是不填充數據字段。所以我不明白爲什麼會這樣做,因爲模型中的所有內容都是正確的。

還要注意的是,當我將文件上傳到我活的服務器我不明白的錯誤,但colums不顯示這些colums:

array(
       'name'=>'contractNoteItems.cni_fund_id', 
       'type'=>'raw', 
       'value'=>'$data->contractNoteItems->f_name', 
       ), 
     array(
      'name'=>'contractNoteItems.cni_isin', 
      'type'=>'raw', 
      'value'=>'$data->contractNoteItems->cni_isin', 
     ), 

     array(
      'name'=>'contractNoteItems.cni_client_account_no', 
      'type'=>'raw', 
      'value'=>'$data->contractNoteItems->cni_client_account_no', 
     ), 

直播服務器PHP是27年3月5日和我本地服務器是5.3.3,所以我不知道爲什麼我會在本地出現錯誤。無論如何,我的問題是關於那裏的數據沒有顯示,並給我在本地服務器上的錯誤。

回答

0

我覺得你的問題是在你的按鈕區域,您有這樣的臺詞:

'visible'=>'$data->checkIfRetired($data["id"])', 

然而$data應該是一個對象不是一個數組。嘗試將其更改爲:

'visible'=>'$data->checkIfRetired($data->id)', 

然而實際上,如果您需要任何數據傳遞給像checkIfRetired功能,因爲它已經是一個實例。在這個函數中,你應該能夠使用值$this->id而不是必須通過它。

0

您的列的value元素是問題所在。當未指定列的value元素時,Yii會在獲取所需屬性的值之前檢查對象是否存在。你的value元素沒有這個檢查,因此錯誤。

爲了簡化代碼,不需要爲某些列添加valuetype元素。因此你的代碼變得

'columns'=>array(
    ... 
    'contractNoteItems.cni_fund_id', 
    'contractNoteItems.cni_isin', 
    'contractNoteItems.cni_client_account_no', 
    ... 
) 

欲瞭解更多信息,請參閱CGridView.columns