Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Extensions > YII правила для проверки форм


Автор: studentigor 9.3.2012, 13:08
Всем привет.

Есть правила, для проверки формы авторизации и регистрации.
Код

public function rules(){
        return array(array('login, password', 'required'),//эта строка работает всегда
            array('email,password_repeat', 'required','on'=>'registr'),// эта строка должна срабатывать если идет регистрация
            array('login', 'length', 'max'=>20),


Вот я вызываю валидацию
Код

if($model->validate('registr')) {


Так вот в таком варианте запись в базу не заносится.
Если же я в rules сделаю так
Код

public function rules(){
        return array(array('login, password,email,password_repeat', 'required'),
            array('login', 'length', 'max'=>20),

тогда регистрация срабатывает, но тогда не будет работать авторизация

вобщем как сделать так чтобы если я вызываю валидацию для регистрации $model->validate('registr') у меня
в rules срабатывали строки с ,'on'=>'registr',
если же 
$model->validate('login') у меня
в rules срабатывали строки с ,'on'=>'login',

У меня почему-то это не срабатывает, хотя делаю все по книжным примерам

Автор: SamDark 9.3.2012, 13:39
Обязано срабатывать. Вы после validate делаете save с параметром false? Если нет, у вас повторно вызывается валидация.

Автор: studentigor 9.3.2012, 17:22
да с false, но почему-то не срабатывает. 



Автор: SamDark 9.3.2012, 18:33
Попробуйте приписать else и сделать print_r($model->getErrors())

Автор: studentigor 9.3.2012, 21:02
все, пасиб.

оказалось что $model->attributes = $_POST['Users']; не присваивал значения для password_repeat.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)