如何使用场景重用Yii表单

时间:2011-11-01 06:28:43

标签: forms forms-authentication yii yii-inheritance

我有注册模式(其中包含登录,密码,电子邮件,移动设备等字段),并希望在登录操作中使用注册中的某些字段(如登录名和密码),并对其进行验证。如何重用模型字段,还可以根据方案验证字段。

2 个答案:

答案 0 :(得分:1)

我认为您可以重复使用表单模型,并可以在表单和每个操作中编写自定义验证规则。例如。哈里,你只是尝试这样......

class RegistrationForm extends CFormModel {

  public $login;
  public $password;
  public $email;
  public $mobile;

  public function rules() {
    return array(
      array('login,password','loginValidator','on'=>'login'),
      array('login,password,email,mobile','registerValidator','on'=>'register')
    );
  }

  public function loginValidator() {
    dummyfunc($this->login,.....);
  }

  public function registerValidator() {
    dummyfunc($this->login,.....);
  }

}

控制器部分:

$formModel = new RegistrationForm('login');
$formModel->attributes = $_POST['RegistrationForm'];
if($formModel->validate()) {
  #..........;
} else {
  #..........;
}

度过愉快的一天!!!

答案 1 :(得分:0)

最好使用用户模块。

这是用户模块的目录结构示例:

protected/modules/user/
    controllers/
        LoginController.php
        LogoutController.php
        RegisterController.php
        ...
    models/
        Login.php
        Register.php
        ...
    views/
        user/
            login.php
            register.php
            ...

yii-user的目录结构可能很有用。