我是Yii框架的新手。我想用Yii实现一个注册表。 我检查了它的演示项目的博客项目,但它没有注册表。 有谁知道关于这个问题的教程?
答案 0 :(得分:5)
对于注册系统。
您应该按照以下步骤操作。
我有一张桌子,它有五个不同的字段,即id,name,conatct_no,email,password
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 -->
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));
}
}
现在您需要一个模型文件进行验证。 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'), ); } }
您还需要更改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)
创建控制器:
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));
}
}