2013-11-02 5 views
0

Я пытаюсь проверить динамически добавленные элементы управления в форме. У меня есть регистрационная форма, где у меня есть возможность для пользователей добавлять от 1 до 5 информации об образовании. Я использую Jquery для обработки добавленных полей удаления.

HTML код

<input name="data[Usereducation][0][schoolname]" id="Usereducation0Schoolname" type="text"> 
<input name="data[Usereducation][1][schoolname]" id="Usereducation1Schoolname" type="text"> 
................... 

На представлении это создает массив как ..

Array ([0] => Array ([schoolname] =>) [1] => Array ([schoolname] =>) [3] => Array ([schoolname] =>) 

Мой модальный имеет следующие проверки.

public $validate = array(
    'schoolname'=>array(
      'School Name'=>array(
       'rule'=>'notEmpty', 
       'message'=>'Please enter your School Name.' 
      ) 
     )   
    ); 

В контроллере я стараюсь, чтобы проверить их с $this->Usereducation->validates();

Но ничего не происходит. Любые предложения о том, как справиться с этим?

+0

Вы настраиваете данные для модели до проверки ?, можете ли вы поместить свой код контроллера? –

+0

Да, я сделал это $ this-> Userinformation-> set ($ this-> data); –

+0

даже если вы установите 'data' должен быть' массив ( \t 'UserInformation' => массив ( \t \t 'schoolname' => 'значение' \t)) 'не так, как вы настраиваете там. –

ответ

0

Метод 1:

Использование saveMany Для проверки достоверности нескольких записей сразу

В контроллере просто использовать saveMany/saveAll метод модели вместо validates, так как вы слишком большого количества записей в подтверждено.

if ($this->UserInformation->saveMany($this->request->data)) { 
    // do your stuff 
} else { 
    // check the validation errors here. 
    pr($this->UserInformation->validationErrors);exit; 
} 

и ваш $this->request->data должно быть, как это

Array(
    'Userinformation' => array(
     0 => array(
      'schoolname' => 'school 0' 
     ), 
     1 => array(
      'schoolname' => 'school 1' 
     ), 
     2 => array(
      'schoolname' => 'school 2' 
     ), 
    ) 
) 

Способ 2:

Вот еще один способ проверки нескольких записей сразу:

Если вы хотите для проверки записей и не хотите выполнять операцию сохранения, это полезно.

$this->ModelName->validateMany($data['ModelName']); 

Здесь $data должен выглядеть, как показано ниже

$data = array(
    'ModelName' => array(
     'field1' => 'value1' 
     'field2' => 'value2' 
     'field3' => 'value3' 
    ) 
); 

И вы можете получить доступ к проверки ошибок (на неудачной проверки) Использование $this->ModelName->validationErrors

В Вашем случае

if ($this->UserInformation->validateMany($this->request->data['Userinformation'])) { 
    // do your stuff 
} else { 
    // check the validation errors here. 
    pr($this->UserInformation->validationErrors);exit; 
} 

и ваш $this->request->data должно быть таким:

Array(
    'Userinformation' => array(
     0 => array(
      'schoolname' => 'school 0' 
     ), 
     1 => array(
      'schoolname' => 'school 1' 
     ), 
     2 => array(
      'schoolname' => 'school 2' 
     ), 
    ) 
) 
+0

Наконец-то я получил его на работу. Спасибо Анил. –

+0

Рад помочь вам :) –

+0

Можете ли вы, пожалуйста, помочь мне с этим? http://stackoverflow.com/questions/19999401/hasandbelongstomany-friends-model-cakephp Спасибо заранее. –