モデルの複数のレコードを更新する方法を考え出そうとしています。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 に更新しますか?
誰かが助けてくれることを願っています。