Не required поле не передается

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
p0rsche
Сообщения: 192
Зарегистрирован: 2012.01.18, 08:28
Контактная информация:

Не required поле не передается

Сообщение p0rsche »

Доброго времени суток.
Столкнулся со след. проблемой - есть 2 поля password & password2 (служит для подтверждения пароля).
Форма выглядит примерно так:

Код: Выделить всё

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'registration-form',
    'enableAjaxValidation'=>true,
)); ?>
    <p class="note">Fields with <span class="required">*</span> are required.</p>
    <?php echo $form->errorSummary($model); ?>

        <?php echo $form->labelEx($model,'firstname'); ?>
        <?php echo $form->textField($model,'firstname',array('size'=>32,'maxlength'=>32)); ?>
        <?php echo $form->error($model,'firstname'); ?>

        <?php echo $form->labelEx($model,'lastname'); ?>
        <?php echo $form->textField($model,'lastname',array('size'=>32,'maxlength'=>32)); ?>
        <?php echo $form->error($model,'lastname'); ?>

        <?php echo $form->labelEx($model,'password'); ?>
        <?php echo $form->passwordField($model,'password',array('size'=>32,'maxlength'=>32)); ?>
        <?php echo $form->error($model,'password'); ?>

        <?php echo $form->labelEx($model,'password2'); ?>
        <?php echo $form->passwordField($model,'password2',array('size'=>32,'maxlength'=>32)); ?>
        <?php echo $form->error($model,'password2'); ?>

        <?php echo CHtml::submitButton('Create'); ?>
    
<?php $this->endWidget(); ?>
rules() правила модели RegistrationForm:

Код: Выделить всё

public function rules()
    {
        return array(
            // username and password are required
            array('password', 'required'),
            //TODO if removes password2 nothing sent to server from password2 field
            array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'register'),
            array('password', 'length', 'max'=>128),
        );
    } 
По логике - поле password2 можно убрать из required, т.к. далее следует правило проверки password = password2, а password, в свою очередь, required и <=128 символов.
Делаю var_dump после отправки формы, в $model->attributes записывается только password, password2 = null.
Либо здесь такая логика не идет, и все же необходимо password2 добавить в required rule?
chelishchevi
Сообщения: 86
Зарегистрирован: 2011.11.03, 15:34
Откуда: Калининград

Re: Не required поле не передается

Сообщение chelishchevi »

Просто правила для валидации атрибута password2 нет.
Есть вариант сделать его "safe" что не очень правильно, либо вот так:

Код: Выделить всё

 array('password, password2', 'length', 'max'=>128), 
p0rsche
Сообщения: 192
Зарегистрирован: 2012.01.18, 08:28
Контактная информация:

Re: Не required поле не передается

Сообщение p0rsche »

chelishchevi писал(а):Просто правила для валидации атрибута password2 нет.
Спасибо, это работает.
Ответить