[font="Tahoma"][rtl]اگه مدل وابسته به فرم از کلاس CFormModel مشتق شده باشه که راحته و کافیه به صفحه contact.php پروژه Skeleton نگاه کنید (همون پروژه ای که خود Yii بطور خودکار میسازه). اما اگه مدلتون از کلاس CActiveRecord مشتق شده، باید مراحل زیر رو انجام بدین با فرض اینکه این کار رو میخواین برای actionRegister از کنترلر UserController انجام بدین:
1- توی متد accessRules از کنترلر، این rule رو اضافه کنید:[/rtl][/font]
array('allow',
'actions' => array('register', 'captcha'),
'users' => array('*'),
),
[font="Tahoma"][rtl]2- اکشن register رو اینطوری به کنترلر اضافه کنید:[/rtl][/font]
/**
* Register a new model.
* If registration is successful, the browser will be redirected to the 'view' page.
*/
public function actionRegister() {
$this->layout = '//layouts/column1';
$model = new User;
$model->scenario = 'register';
if(isset($_POST['User'])) {
$model->attributes = $_POST['User'];
if($model->save())
$this->redirect(array('view', 'id' => $model->id));
}
$this->render('register', array(
'model' => $model,
));
}
[font="Tahoma"][rtl]3- به مدل User این فیلد رو اضافه کنید:[/rtl][/font]
public $verifyCode;
[font="Tahoma"][rtl]4- این validation ruleها رو به مدل اضافه کنید:[/rtl][/font]
array('verifyCode', 'captcha', 'on' => 'register', 'allowEmpty'=>!CCaptcha::checkRequirements()),
array('verifyCode', 'required', 'on' => 'register'),
[font="Tahoma"][rtl]5- این label رو به انتهای آرایه متد attributeLabels اضافه کنید تا برای CAPTCHA عنوان مناسب ظاهر بشه:[/rtl][/font]
'verifyCode' => 'Security Code',
[font="Tahoma"][rtl]6- یک ویوی جدید توی پوشه views/user به اسم register.php ایجاد کنید:[/rtl][/font]
<?php
/* @var $this UserController */
/* @var $model User */
/* @var $form CActiveForm */
$this->breadcrumbs=array(
'Users'=>array('index'),
'Register',
);
?>
<h1>Register a new user</h1>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'user-form',
'enableAjaxValidation'=>false,
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.</p>
<?php echo $form->errorSummary($model); ?>
<div class="row">
<?php echo $form->labelEx($model,'username'); ?>
<?php echo $form->textField($model,'username',array('size'=>60,'max length'=>255)); ?>
<?php echo $form->error($model,'username'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'email'); ?>
<?php echo $form->textField($model,'email',array('size'=>60,'maxlen gth'=>255)); ?>
<?php echo $form->error($model,'email'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'password'); ?>
<?php echo $form->passwordField($model,'password',array('size'=>60, 'maxlength'=>255)); ?>
<?php echo $form->error($model,'password'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'password_repeat'); ?>
<?php echo $form->passwordField($model,'password_repeat',array('siz e'=>60,'maxlength'=>255)); ?>
<?php echo $form->error($model,'password_repeat'); ?>
</div>
<?php if(CCaptcha::checkRequirements()): ?>
<div class="row">
<?php echo $form->labelEx($model,'verifyCode'); ?>
<div>
<?php $this->widget('CCaptcha'); ?>
<?php echo $form->textField($model,'verifyCode'); ?>
</div>
<div class="hint">Please enter the letters as they are shown in the image above.
Letters are not case-sensitive.</div>
<?php echo $form->error($model,'verifyCode'); ?>
</div>
<?php endif; ?>
<div class="row buttons">
<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
[font="Tahoma"][rtl]توی فایل view صفحه static خودتون این کد رو بنویسید:[/rtl][/font]
Yii::import('application.models.*');
[font="Tahoma"][rtl]حالا میتونید از هر مدلی که دلتون میخواد، استفاده کنید و ویژگی Lazy Loading فریمورک Yii فایل مربوطه رو بطور خودکار بارگذاری میکنه.[/rtl][/font]