2012-05-23 4 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 출력, 예를 들면 :

{"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[1]

+0

작품 $modelClients[0]와 두 번째 모델로 이동합니다, 감사합니다! – Timur