2013-08-30 4 views
0

Так что я дал на все выше и решил переместить colums Я хотел показать с помощью AJAX в другой сетке в основной сетке, но по какой-то причине я получаю эту ошибку: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"])', 
       ) 
      ) 
     ), 
    ), 
)); 
?> 

И конкретная ошибка приходит the)); прямо перед закрывающим тегом 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', 
     ), 

РНР живой сервер 5.3.27 и на моем локальный сервер - 5.3.3, поэтому я не знаю, почему я получаю ошибку на локальном сервере. Во всяком случае, мой вопрос касается данных, которые не отображаются и дают мне ошибку на локальном сервере.

ответ

0

Я думаю, что вы проблемы в вашей кнопки области у вас есть такие строки:

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

Однако $data должен быть объект не является массивом. Попробуйте изменить его:

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

В действительности, хотя вы должны должны передать какие-либо данные функции, как checkIfRetired, поскольку она уже является экземпляром. В функции вы должны просто использовать значение $this->id вместо того, чтобы передавать его.

0

Элементы для ваших столбцов - это элементы value. Когда элемент value столбца не указан, Yii проверяет, существует ли объект до получения значения требуемого атрибута. Элементы вашего value не имеют этой проверки и, следовательно, ошибки.

Для простоты вашего кода нет необходимости добавлять элементы для некоторых столбцов в value и type. Таким образом ваш код становится

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

Для получения дополнительной информации см CGridView.columns

Смежные вопросы