AllowEmpty против NotEmpty - PullRequest
6 голосов
/ 02 июля 2011

Новое в CakePHP здесь - я просматриваю документацию на сайте, пытаясь собрать некоторые базовые данные для проверки модели, которую я создаю. Вероятно, это будет первый из многих моих вопросов о CakePHP.

В CakePHP Book правила проверки, по-видимому, определяют два разных метода проверки того, что поле не пустое - AllowEmpty и NotEmpty.

Вопрос - есть ли ощутимая разница между этими двумя? CakePHP заявляет, что правила проверки должны присутствовать в вашей модели или контроллере - одно лучше подходит для модели, а другое для контроллера? Книга ничего не говорит об этом. Я предполагаю, что это старый метод, который все еще существует?

Что дает? Должен ли я использовать определенный, или оба, или это не имеет значения?

Редактировать: Я решил проверить документацию класса CakePHP 1.3 для него (чтобы проверить значение по умолчанию атрибута allowEmpty), но он даже не отображается. Это не в исходном коде либо ... есть что-то, что я пропускаю?

Ответы [ 3 ]

10 голосов
/ 02 июля 2011

Добро пожаловать на торт.Надеюсь, вам понравится.

Это определенно один из незнакомых аспектов Cake.

notEmpty само по себе является правилом.Вы можете определить его в своем атрибуте $validation.Вы можете назначить сообщение, когда эта проверка не пройдена.Вы можете рассматривать это как любое другое правило проверки.

allowEmpty является опцией другого правила проверки, обычно не notEmpty. Это не правило проверки само по себе. Это позволит, например, вам определить, что поле varchar допускает пустую строку, '' или строку, не содержащую больше20 символов.

Редактировать:

Вот код

// model validation using 'notEmpty'
$validation = array(
    'fieldName' => array(
        'notEmpty' => array(
            'rule' => 'notEmpty',
            'message' => 'This value may not be left empty!'
        ),
        ... // other rules can go here
    ),
    ... // other fieldName can go here
);


// model validation using 'allowEmpty' to create an optional field
$validation = array(
    'fieldName' => array(
        'maxLength' => array(
             'rule' => array('maxLength', 20),
             'message' => 'This field may only contain 20 characters!',
             'allowEmpty' => true    // we'll also accept an empty string
        ), 
        ... // other rules can go here
    )
    ... // other fieldName can go here
);
0 голосов
/ 22 января 2015

Я обнаружил случай, когда мне пришлось использовать 'allowEmpty' => false вместо rule => 'notEmpty'. У меня была форма с загрузкой ввода (type = 'file'), у которой было правило проверки notEmpty, и оно продолжало не проходить проверку, даже несмотря на то, что отладчик показал загруженный массив file []. Когда я удалил правило notEmpty и установил allowEmpty => false, это сработало, выдавая ошибку, когда файл не был выбран, и принимая его, когда он был выбран. Он должен иметь отношение к массиву, а не к текстовому значению.

0 голосов
/ 06 февраля 2014

Это очень просто сделать проверку на стороне сервера в cakephpВот код для обеих проверок (noEmpty, maxlength) для одного и того же поля.

'fieldName' => array(
'rule'    => array('maxLength', 20),
'message' => 'fieldName should be less than 20 characters',
'allowEmpty' => true
),
'fieldName' => array(
    'notEmpty' => array(
        'rule' => array('notEmpty'),
        'message' => 'Please enter field name',
     ),
),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...