Проверка формы в CakePHP - PullRequest
1 голос
/ 26 мая 2011

У меня есть одна модель login - в ней 5 полей.Во время регистрации я проверяю все поля, но при редактировании записи я хочу проверить только некоторые поля перед сохранением данных.

Я использую этот код:

if ($this->Login->validates(array('fieldList' => array('password','name')))) {
    if ($this->Login->save($this->data)) {
        echo 'helllo';exit;
        //$this->Session->setFlash('Your post has been updated.');
        //$this->redirect(array('action' => 'profile'));
    }else {

    }
} else {

}

Но это не работает.

Ответы [ 3 ]

2 голосов
/ 26 мая 2011

Вы должны правильно сделать это, установив on в create в правиле проверки .Повторять эту логику в контроллере каждый раз плохо.

Особая проблема в вашем случае заключается в том, что save проверяет снова и проверяет все поля.На самом деле, первый вызов validates совершенно лишний.Вам нужно будет использовать третий параметр $fieldlist функции save, если вы хотите сохранить / проверить только определенные поля:

$this->Login->save($this->data, true, array('password','name'))
0 голосов
/ 26 мая 2011

Если я вас правильно понимаю, вы хотите, чтобы проверка применялась только к create, а не update. Cake имеет эту встроенную функциональность.

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

var $validate = array(
    'fieldName1' => array(
        'rule' => 'ruleName', // or: array('ruleName', 'param1', 'param2' ...)
        'required' => true,
        'allowEmpty' => false,
        'on' => 'create', // or: 'update'       ** here **
        'last' => false,
        'message' => 'Your Error Message'
    )
);

Может решить вашу проблему.

0 голосов
/ 26 мая 2011

Вам лучше отделить все, сначала вы подтвердите, если все пойдет хорошо, только потом сохраните все данные.

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

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