【问题标题】:Yii same model saved twice, AJAX ValidationYii相同模型保存两次,AJAX验证
【发布时间】:2012-05-23 13:59:57
【问题描述】:

我需要用不同的数据保存模型两次:

控制器:

 $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"]}

所以第二个模型被忽略了。

我试过了

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"]}

因此它只是不验证任何字段。

【问题讨论】:

    标签: php ajax validation yii


    【解决方案1】:

    在您的控制器中,您应该将模型声明为数组。

     $modelClients=array();
     $modelClients[] = new Client;
     $modelClients[] = new Client;
    
     if(Yii::app()->getRequest()->getIsAjaxRequest()) {
        echo CActiveForm::validateTabular(  $modelClients);
        Yii::app()->end();
     }
    

    您的第一个模型转到$modelClients[0],第二个模型转到$modelClients[1]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 2019-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      相关资源
      最近更新 更多