Проверка PHP Cake (+ preg_match () - предупреждение) - PullRequest
0 голосов
/ 08 октября 2011

с использованием cakephp 2.0 rc3.

после проверки в моей модели:

var $validate = array(
        'loginname' => array(
            'minCharactersRule' => array(
                'rule' => array('minLength', 3),
            ),
            'alphaNumericRule' => array(
                'rule' => 'alphaNumeric',
            ),
            'uniqueRule' => array(
                'rule' => 'isUnique',
            ),
            'on' => 'create',
            'required' => true,
            'allowEmpty' => false,
        ),

        'password' => array(
            'minCharactersRule' => array(
                'rule' => array('minLength', 5),
            ),
            'required' => true,
            'allowEmpty' => false,
        ),

        'email' => array(
            'emailRule' => array(
                'rule' => array('email'),
            ),
            'uniqueRule' => array(
                'rule' => 'isUnique',
            ),
            'required' => true,
            'allowEmtpy' => false,
        ),

        'display_name' => array(
            'betweenRule' => array(
                'rule' => array('between', 3, 20),
            ),
            'uniqueRule' => array(
                'rule' => 'isUnique',
            ),
            'required' => true,
            'allowEmpty' => false,
        ),

        'registered' => array(
            'rule' => array('date', 'ymd'),
            'required' => false,
            'allowEmpty' => false,
            'on' => 'create'
        ),

        'status' => array(
            'rule' => 'numeric',
            'required' => false,
            'allowEmpty' => false,
            'on' => 'create'
        ),
    );

, когда я заполняю каждое поле и отправляю им сообщения об "требуемых" ошибках ... debug ($this-> Model-> validationErrors) говорит:

Array(
[loginname] => Array
    (
        [0] => required
    )

[password] => Array
    (
        [0] => required
    )

[email] => Array
    (
        [0] => required
    )

[display_name] => Array
    (
        [0] => required
    ))

, кроме того, появляются некрасивые предупреждения:

Warning (2): preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash [CORE/Cake/Model/Model.php, line 2981]

(4 раза)

, когда я его увиделВ первый раз я подумал, что что-то неправильно набрал, но, проверив 3-4 раза и получив ту же ошибку, я решил прийти сюда, чтобы спросить: х, я что-то упустил?иссякают идеи ...

Нахри

Ответы [ 2 ]

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

после прочтения примеров поваренной книги, я нашел решение.

каждое отдельное правило должно иметь заданные параметры allowEmpty и т. Д., А не само поле.

это не даетсмысл для меня, но вот как это описано в руководстве и как это работает ..

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

required => true не означает то же самое, что правило валидации notEmpty(). required => true указывает, что ключ массива должен присутствовать - это не значит, что он должен иметь значение. Поэтому проверка не будет выполнена, если поле отсутствует в наборе данных, но может (в зависимости от правила) успешно выполнить, если переданное значение пусто ('').

Так что в вашем случае вы можете закомментировать все required => true и все должно быть в порядке.

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