0

モデルの複数のレコードを更新する方法を考え出そうとしています。YiiBooster を使用しているので、Extended Grid を使用して一括操作を実行できることがわかりました。

私が Web で見つけた例のほとんどは、Ajax を使用して複数のレコードを削除する方法を示していますが、私の要件は少し異なります。Yii の初心者として、私はこれに対する適切な解決策を見つけるのに苦労しています。

基本的に、1対多の関係を持つ親と子の2つのモデルがあります。子モデルには、親 ID を使用して属する親を参照するフィールドがあります。

アプリケーションのフロントエンドで、ユーザーは親の更新ビューに移動し、その親に割り当てられたすべての子のリストを表示することになっています。一括更新アクションを実行できるすべての子のグリッド リストを表示するモーダル ウィンドウを作成しました。これにより、選択されたすべての子に親 ID が割り当てられます。

レコードの更新に使用される拡張グリッド ビューとコントローラーで何を編集する必要があるかわからないので、誰か助けてもらえますか?

親の更新ビューでは、次のように renderPartial を使用して子のインデックス ビューを取り込みます。

<?php $this->renderPartial('application.modules.children.views.childviews.addChild', array('dataProvider' => new CActiveDataProvider('Children'))); ?>

次に、子インデックス ビューに拡張グリッドを作成します。

<?php
$this->widget('bootstrap.widgets.TbExtendedGridView', array(
    'type' => 'striped bordered',
    'id' => 'children-grid',
    'dataProvider' => $dataProvider,
    'bulkActions' => array(
        'actionButtons' => array(
            array(
                'buttonType' => 'link',
                'type' => 'primary',
                'size' => 'small',
                'label' => 'Bulk Action',
                'url' => array('batchUpdate'),
                'htmlOptions' => array(
                    'class' => 'bulk-action'
                ),
                'id' => 'child_id',
                'click' => ''
            )
        ),
        'checkBoxColumnConfig' => array(
            'name' => 'child_id'
        ),
    ),
    'columns' => array(
        'child_id',
        'child_status',
        'parent_id',
        array(
            'class' => 'bootstrap.widgets.TbButtonColumn',
            'buttons' => array(
                'update' => array(
                    'label' => '<i class="icon-user"></i> <span>View Child</span>',
                    'options' => array('class' => 'btn btn-small'),
                    'url' => 'Yii::app()->createUrl("children/update", array("id"=>$data->child_id))',
                ),
            ),
        ),
    ),
));
?>

コントローラーで更新アクションを呼び出すある種の onclick イベントが必要だと推測しています。このアクションは、選択されたすべてのレコードの parent_id 列を現在の親更新ページの親 ID に更新しますか?

誰かが助けてくれることを願っています。

4

1 に答える 1

0

質問で述べたように、一対多の関係ではなく、多対多の関係が本当に必要なようです。私がそう言う理由は、オークション用に事前定義されたプロパティのセットから選択したいと思われるからです。その場合、親 (オークション) とパースペクティブの子 (プロパティ) のリストを表示し、チェックボックスなどを使用してパースペクティブの子の選択を示します。選択を記録するには、別のデータ モデルを使用する必要があります。今のところ例はありませんが、現在の Yii プロジェクトでこのようなことを行う必要があり、そこに着いたらブログに書きます。

于 2013-06-18T01:44:21.057 に答える