0

私は yii の初心者で、サブフォームとグリッドビューの使用に問題があります。これらのテーブルを使用して簡単な会計仕訳帳を作成したいと考えています。

t_journal
---------
id_journal
dates

t_journal_detail
----------------
id
id_journal
journal_code
journal_name
desc
debit_value
credit_value

以下のように、t_journal 用と t_journal gridview 内にある t_journal_detail 用の 2 つの gridview を使用したいと思います。

$this->widget( 'bootstrap.widgets.TbGridView', array(
    'id'             => 'jurnal-harian-grid',
    'template'       => "<div>{pager}</div><div style='float:left;'>{summary}</div><div class='clear'>&nbsp;</div>\n{items}\n<div>{pager}</div><div style='float:left;'>{summary}</div><div class='clear'>&nbsp;</div><br/>",
    'dataProvider'   => $model->search(),
    'columns'        => array(
        array(
            'name'   => 'id_journal',
            'header' => 'ID',
        ),
        array(
            'name'   => 'dates',
            'header' => 'Date',
            'value'  => 'date("d-m-Y",strtotime($data["dates"]))',
        ),
        array(
            'header' => 'Details',
            'value'  => $this->renderPartial('_subjurnal', array("modelDetail"=>$modelDetail), true),
        ),
    ),
) );

_subjurnal.php 内に、"Testing" という単語を含む 1 列のテーブルを挿入します。

<table border="0">
    <tr>
        <td>Testing</td>
    </tr>
</table>

グリッドビュー内に別のサブフォームまたはサブページを挿入する正しい方法ですか? ジャーナルグリッドビューのすべての行でエラーが発生したため:

Parse error: syntax error, unexpected '<' in D:\xampp\htdocs\cvsunrise\yii\framework\base\CComponent.php(616) : eval()'d code on line 1

それを行う正しい方法は何ですか?このための助けをいただければ幸いです。

4

2 に答える 2

0

"modelDetail"=>$modelDetail定義されていないと思います。実際には、いくつかの修正で機能するはずです。

  1. 列タイプ - 使用'type'=>'raw'

  2. グリッドビューで外部変数を使用する場合は、インポートする必要があります。これを関数で作成することもお勧めします:

'value' => function ($data,$row) use $modelDetail {$this->renderPartial('_subjurnal', array("modelDetail"=>$modelDetail), true);},

また、js スクリプトの二重ロードも避けてください。

于 2013-08-05T06:36:25.303 に答える
0

@ineersaの答えは正しい解決策です。

その後、JavaScript の問題が発生する場合は、次の行を「inside_journal.php」ビューの最後に追加してみてください。

    <?php Yii::app()->getClientScript()->scriptMap=array('jquery.js'=>false, 'jquery.ui.js'=>false); ?>

array() に、2 回充電しているライブラリを配置します。

于 2013-08-05T08:08:56.150 に答える