2012-05-23 30 views
0

我需要兩次保存模型不同的數據:保存兩次Yii的同型號,AJAX驗證

控制器:

$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(); 
} 

但它返回JSON輸出不正確的ID,例如:

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

,因此它只是不驗證任何字段。

回答

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]

+0

的作品就像一個魅力,謝謝! – Timur