0

モデルを異なるデータで 2 回保存する必要があります。

コントローラ:

 $modelClient = new Client;

 if(Yii::app()->getRequest()->getIsAjaxRequest()) {
    echo CActiveForm::validateTabular( array( $modelClient));
    Yii::app()->end();
 }

ビュー(関連部分のみ)

<?php echo $form->textFieldRow($modelClient, '[0]name'); ?>
<?php echo $form->textFieldRow($modelClient, '[0]street'); ?>

<?php echo $form->textFieldRow($modelClient, '[1]name'); ?>
<?php echo $form->textFieldRow($modelClient, '[1]street'); ?>

JSON 出力

{"Client_0_name":["field is empty"],"Client_0_street":["field is empty"]}

したがって、2 番目のモデルは単に無視されます。

私は試した

if(Yii::app()->getRequest()->getIsAjaxRequest()) {
   foreach ($_POST[Client] as $client) {
    $temp = new Client;
    $temp->setAttributes($client);
    echo CActiveForm::validate( array( $modelClient));
   }
   Yii::app()->end();
}

ただし、正しいIDなしでJSON出力を返します。例:

 {"Client_name":["field is empty"],"Client_street":["field is empty"]}

その結果、どのフィールドも検証しません。

4

1 に答える 1

1

コントローラーでは、モデルを配列として宣言する必要があります。

 $modelClients=array();
 $modelClients[] = new Client;
 $modelClients[] = new Client;

 if(Yii::app()->getRequest()->getIsAjaxRequest()) {
    echo CActiveForm::validateTabular(  $modelClients);
    Yii::app()->end();
 }

そして、あなたの最初のモデルは行き$modelClients[0]、2番目のモデルは行きます$modelClients[1]

于 2012-05-23T14:41:33.283 に答える