CakePHP 1.3: $ this-> validates не проверяет - PullRequest
0 голосов
/ 23 января 2012

Я пытаюсь вручную проверить массив из модели, но проверка прошла успешно, независимо от того, какие недопустимые данные я заполняю в массиве.

В моей модели CustomerLocation я пытаюсь проверить $ data:

$this->create();
$this->set($data);
if (!$this->validates()){
    //some action if validation fails
}

В этом случае $ data представляет собой простой массив:

Array
(
[location_number] => 125-Knoxville - M
[packing_notes] => Test
[packing_label_message] => packing message
[length] => 4
[width] => 4
[height] => 4
[weight] => 4
[shipping_carrier] => UPS
[shipping_service] => 2nd Day Air
[ship_date] => 
[id] => 768
[row] => 4
)

Приведенные выше $ data не содержат ни одного из обязательных полей для модели CustomerLocation, поэтому они должны полностью не пройти проверку.

Источником этих $ данных является импортированная строка .csv.Когда я проверяю из запеченной формы Cake для этой модели, проверка работает.

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

Любой совет, безусловно, приветствуется!

Ответы [ 2 ]

1 голос
/ 24 января 2012

Оказывается, мне нужно было:

'required' => true

в правилах проверки для каждого поля.Правило notempty применяется только тогда, когда Cake проверяет форму, очевидно.Я должен был опубликовать свои правила изначально.Я уверен, что кто-то поймал бы это.

0 голосов
/ 23 января 2012

На первый взгляд, я думаю, вам нужно изменить $this->set($data); на:

$this->set(array('CustomerLocation' => $data));

CakePHP использует первый уровень массива, чтобы определить, какую модель (ы) проверять.

Поскольку ни один из ключей не соответствует названию модели (т. Е. У вас нет модели LocationNumber или PackingNotes), правила проверки не найдены или не применены.

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