cakePHP: проверка данных в контроллере (hasMany) - PullRequest
0 голосов
/ 31 октября 2011

У меня следующая проблема:
Мне нужно проверить данные в контроллере, который передается в форме. Особенность: поля из формы отсутствуют в базе данных, НО в массиве $ validate-Array. - Что не должно быть проблемой, афаик.
Другое дело, что Модель имеет отношения между многими частями этой формы.

Text hasMany Proofs

Это массив проверки:

var $validate = array(  
   'freetext' => array(  
      'between' => array(  
          'rule' => array('between', 250, 1000),  
          'message' => '..',  
      ),  
   ),  
);  

Вот пример данных, передаваемых в контроллер

[Proof] => Array
    (
        [0] => Array
            (
                [freetext] => asd
            )
        [1] => Array
            (
                [freetext] => asd
            )
        [2] => Array
            (
                [freetext] => asd
            )
    )

Я использую следующий код для проверки:

$this->Texts->set($this->data);   
if ($this->Texts->validates()) {  

Когда я вызываю его, он возвращает true, поэтому проверка прошла успешно. НО свободный текст имеет чуть менее 250 символов.

Но: форма показывает красные звездочки, которые символизируют меня, что массив проверки успешно проанализирован и применен к форме.
А также в соответствующем контроллере beforeValidate() { debug($this->data); } показывает мне правильные данные.

Так ПОЧЕМУ проверка данных прошла успешно, даже если политики не у меня?

Спасибо, вперед!
~ MxAgent

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Обновлен до cakePHP 2.0 и используется validateMany() для проверки. Теперь это работает;)

0 голосов
/ 31 октября 2011

Быстрый переход в кулинарную книгу (http://book.cakephp.org/view/1154/between) показывает, что ваш формат кажется неправильным. Попробуйте это (опустите массив «между»):

var $validate = array(  
   'freetext' => array(  
          'rule' => array('between', 250, 1000),  
          'message' => '..',  
   )  
);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...