CakePHP validates () поведение возвращаемого (1,2) значения нечетного массива - PullRequest
0 голосов
/ 01 июня 2011

Моя проверка работает нормально, но, казалось бы, случайно, восстановленные значения не являются ошибками проверки моего набора моделей, и ничто не должно вызывать ошибку, но возвращается «1» или «2».

Даже если все данные поля верны, я иногда получаю возвращаемое значение в моем массиве «1» или «2» ...

Вот моя проверка в моем контроллере:

 if ($this->RequestHandler->isAjax()) {
        if ($this->Plan->validates()) {
            $this->Plan->set($this->data);
            $errors = $this->Plan->invalidFields();
            $this->set('errors', $errors);
        } else {
            $this->Plan->set($this->data);
        }
 }

А вот моя проверка модели:

        'ApplicantAge'   => array(
array('rule'=> array('maxLength', 3),
      'message' => 'Applicant Age cannot be longer than 3 digits.'),
      'last' => true,
array('rule'    => array('range', -1, 120),
      'message' => 'Applicant Age cannot exceed 120.'),
      'last' => true,
array('rule'    => 'numeric',
      'message' => 'Applicant Age must be a valid age.'),
      'last' => true,
),
    'SpouseAge'      => array(
array('allowEmpty' => true),
        'last' => true,
array('rule'    => array('maxLength', 3),
      'message' => 'Spouse Age cannot be longer than 3 digits.'),
      'last' => true,
array('rule'    => array('range', -1, 120),
      'message' => 'Spouse Age cannot exceed 120.'),
      'last' => true,
array('rule' => 'numeric',
      'message' => 'Spouse Age must be numeric.'),
      'last' => true,
),
    'NumberChildren' => array(
array('allowEmpty' => true),
      'last' => true,
array('rule'    => array('range', -1, 20),
      'message' => 'Number of Children cannot exceed 20.'),
      'last' => true,
array('rule'    => 'numeric',
      'message' => 'Number of Children must be numeric.'),
      'last' => true,
),
    'ZipCode' => array(
array('rule'    => array('postal', null, 'us'),
      'message' => 'Zip Code format must be valid. Example: 97756'),
      'last' => true,
array('rule'    => array('minLength', 5),
      'rule'    => array('maxLength', 5),
      'message' => 'Zip Code must be 5 digits.'),
      'last' => true
),

1 Ответ

0 голосов
/ 02 июня 2011

Разве вы не должны устанавливать данные в модели перед их проверкой?

if ($this->RequestHandler->isAjax()) {
    $this->Plan->set($this->data);
    if ($this->Plan->validates()) {
        //do something since data validates
    } else {
        $errors = $this->Plan->invalidFields();
        $this->set('errors', $errors);
    }
}

Я знаю, что вы сказали, что это случайные данные, но вы можете найти какую-либо последовательность в ошибке?Возможно, вы сможете вернуть значения для $ this-> data и самой модели Plan, чтобы убедиться, что информация там также верна.Возможно, для начала валидатор получает неверные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...