0

したがって、上記のすべてをあきらめて、ajax で表示したい列をメイン グリッドの別のグリッドに移動することにしましたが、何らかの理由でこのエラーが発生します。

非オブジェクトのプロパティを取得しようとしています

/var/www/html/framework/base/CComponent.php(607) : eval()したコード(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 配列を除く各配列の「値」にコメントを付けると、フィールドにデータを入力しないだけなので、エラーは発生しません。モデルのすべてが正しく定義されているため、なぜこれを行うのか、私にはよくわかりません。

また、ライブサーバーにファイルをアップロードすると、エラーは発生しませんが、これらの列の列は表示されないことに注意してください。

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は5.3.27で、ローカルサーバーは5.3.3であるため、ローカルでエラーが発生する理由がわかりません。とにかく、私の質問は、そこにあるデータが表示されず、ローカルサーバーでエラーが発生することです。

4

2 に答える 2

0

列のvalue要素が問題です。列のvalue要素が指定されていない場合、Yii は目的の属性の値を取得する前にオブジェクトが存在するかどうかをチェックします。あなたのvalue要素にはこのチェックがないため、エラーが発生します。

valueコードを簡素化するために、一部の列にはandtype要素を追加する必要はありません。そのため、コードは次のようになります

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

詳細については、CGridView.columnsを参照してください。

于 2013-08-30T22:22:04.983 に答える
0

問題はボタン領域にあると思います。次のような行があります。

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

ただし$data、配列ではなくオブジェクトにする必要があります。次のように変更してみてください。

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

checkIfRetired実際には、すでにインスタンスであるため、関数などにデータを渡す必要があります。$this->id関数では、値を渡す代わりに値を使用できるはずです。

于 2013-08-30T13:09:42.710 に答える