我是Yii框架的新手.我想用Yii实现一个注册表.我检查了它的演示项目的博客项目,但它没有注册表.有谁知道关于这个问题的教程?
对于注册系统.
你应该按照步骤.
我有一个表,它有五个不同的字段,如ID,名称,conatct_no,电子邮件,密码
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 -->
Run Code Online (Sandbox Code Playgroud)
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));
}
}
Run Code Online (Sandbox Code Playgroud)
现在您需要一个模型文件进行验证.RegisterForm.php
class RegisterForm扩展CFormModel {public $ contact_no; 公共名称; public $ email; public $ password; public $ retypepassword;
public function tableName(){return'user'; }
public function rules(){return array(array('name,contact_no,email,password,retypepassword','required'),array('name,email,password,retypepassword','length','max'=> 200 ),array('email','email','message'=>'请插入有效的电子邮件'),数组('contact_no','length','max'=> 30),array('retypepassword','需要',''=''注册'),数组('password','compare','compareAttribute'=>'retypepassword'),数组('id,name,contact_no,email','safe',' on'=>'search'),); }}
您还需要更改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 ;
}
}
Run Code Online (Sandbox Code Playgroud)
而已.
这是一个完整的注册表格,我自己做了.
如果您是第一个计时器,那么您需要了解控制器的工作方式以及控制器如何与视图和模型进行交互.如果您已经熟悉它,那么您可以轻松地使用自己的注册系统.
这是帮助您理解yii的链接.
http://www.yiiframework.com/screencasts/
谢谢.
| 归档时间: |
|
| 查看次数: |
19290 次 |
| 最近记录: |