使用Yii框架的注册表

时间:2012-08-01 05:08:54

标签: yii registration

我是Yii框架的新手。我想用Yii实现一个注册表。 我检查了它的演示项目的博客项目,但它没有注册表。 有谁知道关于这个问题的教程?

3 个答案:

答案 0 :(得分:5)

对于注册系统。

您应该按照以下步骤操作。

  1. 首先,您可以根据需要创建表用户/注册/注册。
  2. 现在为此创建CRUD,以便您可以轻松地在用户表中插入数据。
  3. 我有一张桌子,它有五个不同的字段,即id,name,conatct_no,email,password

    1. 现在,您在视图中创建一个名为“register”的文件夹。
    2. 在视图中,您只创建了一个文件index.php和register.php
    3. register.php是你的表格。你可以做的。
    4. Register.php

      <h2>Registration Form</h2>
      <div class="form">
      <?php echo CHtml::beginForm(); ?>
      
          <?php echo CHtml::errorSummary($model); ?>
      
          <div class="row">
              <?php echo CHtml::activeLabel($model,'Name'); ?>
              <?php echo CHtml::activeTextField($model,'name') ?>
          </div>
      
      
          <div class="row">
              <?php echo CHtml::activeLabel($model,'Contact Number'); ?>
              <?php echo CHtml::activeTextField($model,'contact_no') ?>
          </div>
      
          <div class="row">
              <?php echo CHtml::activeLabel($model,'email'); ?>
              <?php echo CHtml::activeTextField($model,'email') ?>
          </div>
      
          <div class="row">
              <?php echo CHtml::activeLabel($model,'password'); ?>
              <?php echo CHtml::activePasswordField($model,'password') ?>
          </div>
      
          <div class="row">
              <?php echo CHtml::activeLabel($model,'Retype Password'); ?>
              <?php echo CHtml::activePasswordField($model,'retypepassword') ?>
          </div>
      
          <div class="row submit">
              <?php echo CHtml::submitButton('Register'); ?>
          </div>
      
          <?php echo CHtml::endForm(); ?>
      </div><!-- form -->
      
      1. 现在需要一个用于注册的控制器文件,即registerController.php。
      2. registerController.php

        class registerController extends Controller
        {
          public  function actionIndex() {
            $this->render('index');
          }
        
          public function actionRegister() {
            $model   = new RegisterForm ;
            $newUser = new User;
        
        if(isset($_POST['RegisterForm'])) {
              $model->attributes = $_POST['RegisterForm'];
              if($model->validate()) {
              $newUser->name = $model->name ;
              $newUser->contact_no = $model->contact_no;
              $newUser->email = $model->email;
              $newUser->password = $model->password;
              if($newUser->save()) {
               $this->_identity = new UserIdentity($newUser->email,$newUser->password);
                if($this->_identity->authenticate())
                 Yii::app()->user->login($this->_identity);
                 $this->redirect(Yii::app()->user->returnUrl);
                }
              }
            }
        $this->render('register',array('model'=>$model));
          }
        }
        
        1. 现在您需要一个模型文件进行验证。 RegisterForm.php

          类RegisterForm扩展了CFormModel {  public $ contact_no;  公共名称;  public $ email;  public $ password;  public $ retypepassword;

          public function tableName()  {   返回'用户';  }

          公共职能规则(){   返回数组(    array('name,contact_no,email,password,retypepassword','required'),    数组('name,email,password,retypepassword','length','max'=&gt; 200),    数组('email','email','message'=&gt;'请插入有效的电子邮件'),    数组('contact_no','length','max'=&gt; 30),    数组('retypepassword','required','on'=&gt;'注册'),    数组('password','compare','compareAttribute'=&gt;'retypepassword'),    数组('id,name,contact_no,email','safe','on'=&gt;'search'),    );  } }

        2. 您还需要更改protected / component目录中的UserIdentity.php文件。

          class UserIdentity extends CUserIdentity
          {
            private $_id ;
          
            public function authenticate()
            {
              $email = strtolower($this->username);
              $user = User::model()->find('LOWER(email)=?',array($email));
              if($user === null)
               $this->errorCode = self::ERROR_USERNAME_INVALID ;
              else if(!$user->password === $this->password)
               $this->errorCode = self::ERROR_PASSWORD_INVALID ;
              else {
               $this->_id = $user->id ;
               $this->username = $user->email ;
               $this->errorCode = self::ERROR_NONE ;
              }
               return $this->errorCode == self::ERROR_NONE ;
               return !$this->errorCode;
             }
          
             public function getId() {
              return $this->_id ;
             }    
          } 
          

          就是这样。

          这是一个完整的注册表单,我已经自己制作了。

          如果您是第一个计时器,那么您需要了解控制器的工作方式以及控制器如何与视图和模型进行交互。如果您已经熟悉它,那么您可以轻松地使用自己的注册系统。

          这是帮助您理解yii的链接。

          http://www.yiiframework.com/screencasts/

          感谢。

答案 1 :(得分:1)

使用CActiveForm创建一个包含yii的表单很容易。

以下是yii documentation :: Yii CActiveForm

的链接

答案 2 :(得分:0)

  • 您必须使用CAvtiveForm创建注册表单(例如,请参阅LoginForm)。
  • 创建用户模型。
  • 创建控制器:

    class UsersController extends Controller
    {
         public function actionSignup()
         {
            $model = new RegistrationForm;
    
            if (isset($_POST['RegistrationForm'])) {
                 if ($model->validate()) {
                     $user = new Users;
                     $user->populateRecord($form->attributes);
                     $user->save();
                     $this->redirect(Yii::app()->createUrl('/'));
                 }
            }
    
            $this->render('signup', array('model' => $model));
         }
     }