CakePHP $ this-> Plan-> validates () Валидация из немодельной формы - PullRequest
0 голосов
/ 03 февраля 2011

Я был в этом большую часть дня сейчас, и я не могу заставить это работать на всю жизнь (ну, я могу заставить его работать 1/2, но не полностью правильно).

Обычно я пытаюсь использовать валидацию в поле формы поиска, например:

if(isset($search['ApplicantAge']) && !empty($search['ApplicantAge'])) {
        if ($this->Plan->validates()) { 
        $ApplicantAge = $search['ApplicantAge'];
        }
    } 

А вот мой код модели:

...

'ApplicantAge' => array(
'required' => true,
'allowEmpty' => false,
'rule' => 'numeric',
'message' => 'A valid Age is required. Please enter a valid Age.'),

...

Проверка работает, НО, когда я ввожу число (числовое), она отображает мою ошибку! И когда он пуст, НЕТ ошибка отображается, и когда я ввожу буквы, кажется, работает: (??

Кто-нибудь знает хитрость в этом странном поведении?

Ответы [ 4 ]

1 голос
/ 03 февраля 2011

Попробуйте использовать правило notEmpty вместо обязательного / allowEmpty.

'ApplicantAge' => array(
'applicant-age-numeric'=> array(
    'rule' => 'numeric',
    'message' => 'A valid Age is required. Please enter a valid Age.'
    ),
'applicant-age-not-empty'=> array(
    'rule' => 'notEmpty',
    'message' => 'This field cannot be left blank'
    )
)
0 голосов
/ 04 февраля 2011

Для записи я внесу исправление в свой ранее принятый пост.Мало ли я знал, что validate => только в save () фактически все еще сохранял данные в моей таблице планов.

Я смог заставить его работать, используя set ().Вот код, который полностью решил проблему:

plan_controller.php

if (isset($search['ApplicantAge'])) {
        $this->Plan->set($this->data);
        if ($this->Plan->validates()) {
            $ApplicantAge = $search['ApplicantAge'];
        }
    }

plan.php (модель):

var $validate = array(
    'ApplicantAge'   => array(
        'applicant-age-numeric'   => array(
            'rule'    => 'numeric',
            'message' => 'A valid Age is required. Please enter a valid Age.'),
        'applicant-age-not-empty' => array(
            'rule'    => 'notEmpty',
            'message' => 'This field cannot be left blank'),
    )
0 голосов
/ 03 февраля 2011

Руководство не помогло мне совсем: (

Но ваше предложение относительно массива validate =>, похоже, сработало. Вот как я его получил:

plan_controller.php

if (isset($search['ApplicantAge'])) {
        $this->Plan->save($search, array('validate' => 'only'));
        if ($this->Plan->validates($this->data)) {
            $ApplicantAge = $search['ApplicantAge'];
        }
    }

plan.php (модель)

var $validate = array(
    'ApplicantAge'   => array(
        'applicant-age-numeric'   => array(
            'rule'    => 'numeric',
            'message' => 'A valid Age is required. Please enter a valid Age.'),
        'applicant-age-not-empty' => array(
            'rule'    => 'notEmpty',
            'message' => 'This field cannot be left blank'),
    ),

Теперь, если в поле ApplicateAge не введены данные, отображается правильное сообщение. И если вводится нечисловое значение, также отображается правильное сообщение.

Это было намного сложнее, чем я думал!

0 голосов
/ 03 февраля 2011

во-первых, почему вы используете поле 'ApplicantAge', когда в соглашениях говорится, что его следует использовать в нижнем регистре, а не в набранном?

другой вариант - сделать $ this-> Model-> save ($ data, array ('validate' => 'only'));

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