Несколько вопросов по Yii

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Calmar
Сообщения: 3
Зарегистрирован: 2012.04.22, 12:12

Несколько вопросов по Yii

Сообщение Calmar »

Вот недавно только начал разбираться с yii.

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

<?php

class RegisterForm extends CFormModel
{
    public $username;
    public $password;
    public $password_check;
    public $email;
    public $displayname;
    
    public function rules()
    {
        return array(
            array('username, password, password_check, email', 'required'), 
            array('username', 'length', 'min'=>3, 'max'=>64), 
            array('password', 'length', 'min'=>6, 'max'=>128),
            array('password_check', 'compare', 'compareAttribute'=>'password'),
            array('email', 'email'),
            array('username', 'username')
        );
    }
    
    public function username($attributes, $params)
    {
        $this->addError('username', 'Будьте внимательнее');
    }
?>
array('username', 'username') - не отображает ошибку. Остальные поля работают хорошо. В чем дело? Писал по примеру LoginForm.php

Код представления:

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

<?php
$this->pageTitle=Yii::app()->name . ' - Регистрация';
$this->breadcrumbs=array(
    'Register',
);
?>

<h1>Регистрация</h1>

    <p class="note">Помеченные <span class="required">*</span> поля обязательны</p>

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'register-form',
    'enableClientValidation'=>true,
    'clientOptions'=>array(
        'validateOnSubmit'=>true,
    ),
));
?>

    <div class="row">
        <?php echo $form->labelEx($model,'username',array('label'=>'Логин')); ?>
        <?php echo $form->textField($model,'username'); ?>
        <?php echo $form->error($model,'username'); ?>
    </div>
    
        <div class="row">
        <?php echo $form->labelEx($model,'email',array('label'=>'E-mail')); ?>
        <?php echo $form->textField($model,'email'); ?>
        <?php echo $form->error($model,'email'); ?>
    </div>
    

    <div class="row">
        <?php echo $form->labelEx($model,'password',array('label'=>'Пароль')); ?>
        <?php echo $form->passwordField($model,'password'); ?>
        <?php echo $form->error($model,'password'); ?>
    </div>
    
    <div class="row">
        <?php echo $form->labelEx($model,'password_check',array('label'=>'Повторите')); ?>
        <?php echo $form->passwordField($model,'password_check'); ?>
        <?php echo $form->error($model,'password_check'); ?>
    </div>
    
    <div class="row">
        <?php echo $form->labelEx($model,'displayname',array('label'=>'Отображаемое мия')); ?>
        <?php echo $form->passwordField($model,'displayname'); ?>
        <?php echo $form->error($model,'displayname'); ?>
    </div>
    
    <div class="row buttons">
    <?php echo CHtml::submitButton('Зарегистрироваться'); ?>
    </div>

<?php $this->endWidget(); ?>
ActionRegister в контроллере:

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

 public function actionRegister()
    {
        
        $model = new RegisterForm;
        
        if(isset($_POST['ajax']) && $_POST['ajax']==='register-form')
        {
            echo RegisterForm::validate($model);
            Yii::app()->end();
        }
        
        if(isset($_POST['RegisterForm']))
        {
            $model->attributes=$_POST['RegisterForm'];
            // validate user input and redirect to the previous page if valid
            if($model->validate())
            {
                $this->redirect(Yii::app()->user->returnUrl);
            }
        }
        
        $this->render('register', array('model'=>$model));
    }
}
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: Несколько вопросов по Yii

Сообщение Koduc »

Возможно, конфликт в геттерах с переменной username и функцией username().
Попробуйте функцию обозвать, например, usernameValidator
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Ответить