CakePHP Обязательные поля - не имеет никакого смысла - PullRequest
0 голосов
/ 23 февраля 2012

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

public $validate = array(
    'fname' => array(
        'rule1' => array(
            'rule' => 'notEmpty',
            'message' => 'Please enter your first name'
        ),
        'rule2' => array(
            'rule' => array('maxLength', '50'),
            'message' => 'First name cannot exceed 50 characters'
        )
    ),
    'sname' => array(
        'rule1' => array(
            'rule' => 'notEmpty',
            'message' => 'Please enter your last name'
        ),
        'rule2' => array(
            'rule' => array('maxLength', '50'),
            'message' => 'Last name cannot exceed 50 characters'
        ),
    ),
    'email' => array(
        'rule1' => array(
            'rule' => 'notEmpty',
            'message' => 'Please enter your email address'
        ),
        'rule2' => array(
            'rule' => array('maxLength', 100),
            'message' => array('Email cannot exceed 100 characters')
        ),
        'rule3' => array(
            'rule' => 'email',
            'message' => 'Please enter a valid email address'
        ),
        'rule4' => array(
            'rule' => 'isUnique',
            'message' => 'An account already exists with that email address',
            'on' => 'update'
        )
    )
);

Все эти 3 поля не могут быть пустыми, но Cake решает, чтобы fname и sname отображались в форме, как требуется, но электронная почта не требуется. Я говорю о классе на входах, что делает его обязательным. Это так случайно. В базе данных все поля идентичны VARCHAR, а не NULL.

Я пытался добавить allowEmpty => false к электронному письму, но оно ничего не делает. Это работает с другими полями, которые имеют только одно правило, но не работают с полями, имеющими несколько правил. Тем не менее, я хочу знать, почему он требует fname и sname, но не email.

Снимок экрана: http://i.imgur.com/3JMTR.gif

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Привет, в таблице для поля электронной почты сделайте так, как не может быть

NULL

(Я думаю, что столбец электронной почты может принимать нулевые значения, подобные тому, что вы создали таблицу) тогда на экране появится обязательный * символ.Конечно, это будет работать, я сталкиваюсь с той же проблемой, как это

1 голос
/ 27 февраля 2012

Попробуйте добавить 'required' = true в правила полей, которые вы хотите заполнить.

0 голосов
/ 10 июня 2015

Вы можете отключить все правила проверки электронной почты:

unset($this->ModelName->validate['email']);

Но после просмотра снимка экрана я вижу, что над полем электронной почты нет красной звезды.Неправильно назван вход электронной почты

echo $this->Form->input('email');

Обычно, если у вас есть эта строка (если она генерируется bake, чем должно быть правильно), она должна иметь правила проверки для поля электронной почты

...