mvc با یک مثال ساده(قسمت سوم)

اکشن بعدی ای که می خوایم بررسی کنیم actionCreate هست .
اکشن ثبت کاربر فقط توسط کسانی که لاگین کرده باشند نمایش داده میشه .
آدرس زیر را در مرورگر وارد نمایید.

http://localhost:1007/index.php?r=user/create

پس از وارد کردن سیستم به صورت اتومات شما را به صفحه ی لاگین ارسال میکند.
دلیلشو توی جلسه قبل گفتیم .


public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index','view'),
'users'=>array('*'),
),
array('allow', // allow authenticated user to perform 'create' and 'update' actions
'actions'=>array('create','update'),
'users'=>array('@'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('admin','delete'),
'users'=>array('admin'),
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}

اکشن های create و update فقط توسط افراد لاگین اجازه ی دسترسی دارند : @ به معنی افراد لاگین می باشد.
خوب برای ورود به سایت از admin , admin استفاده کنین. یا demo , demo
در جلسات بعدی نحوه ی ورود به سایت از طریق جدول user را آموزش میدیم حتما . 😉
خوب وارد سایت که شدین باید تصویر زیر رو ببینید.

آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

 

خوب  این صفحه چطوری نمایش داده شده؟

اول باید userController  اکشن create رو نگاه بنداریم. بعدش ویو این اکشن

actionCreate

public function actionCreate()
{
$model=new User;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);

if(isset($_POST['User']))
{
$model->attributes=$_POST['User'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}

$this->render('create',array(
'model'=>$model,
));
}

خوب ابتدا اومدیم یه نمونه از مدل user ایجاد کردیم.
بعد اونو ارسال کردیم به ویوی create
پارامتر model هم ارسال کردیم.

if(isset($_POST['User']))
{
$model->attributes=$_POST['User'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}

این کد هنگامی که اطلاعات post بشه اجرا میشه. چون هنوز پارامتری پست نشده پس با هاش کاری نداریم.
خوب مدل به ویوی create ارسال شده
به فولدر views فولدر user , فایل create.php

<?php
/* @var $this UserController */
/* @var $model User */

$this->breadcrumbs=array(
	'User'=>array('index'),
	'Create',
);

$this->menu=array(
	array('label'=>'List User', 'url'=>array('index')),
	array('label'=>'Manage User', 'url'=>array('admin')),
);
?>

<h1>Create User</h1>

<?php $this->renderPartial('_form', array('model'=>$model)); ?>

breadcrumbs و menu که قبلا توضیح داده شد.
خطی که مهمه :

<?php $this->renderPartial('_form', array('model'=>$model)); ?>

ویوی create.php پارامتر ارسالی از اکشنو میریزه توی متغییر $model میفرسته به _form
فرق renderPartial با render اینه که renderPartial قالبو لود نمیکنه اما render قالب سایتو لود میکنه.
پس میریم به _form.php

<?php
/* @var $this ConfirmRulesController */
/* @var $model ConfirmRules */
/* @var $form CActiveForm */
?>

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'confirm-rules-form',
	// Please note: When you enable ajax validation, make sure the corresponding
	// controller action is handling ajax validation correctly.
	// There is a call to performAjaxValidation() commented in generated controller code.
	// See class documentation of CActiveForm for details on this.
	'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,'user_id'); ?>
		<?php echo $form->textField($model,'user_id'); ?>
		<?php echo $form->error($model,'user_id'); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'submit_date'); ?>
		<?php echo $form->textField($model,'submit_date'); ?>
		<?php echo $form->error($model,'submit_date'); ?>
	</div>

	<div class="row buttons">
		<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
	</div>

<?php $this->endWidget(); ?>

</div><!-- form -->

این ویجت یکی از ویجت های خود فریم ورک هست که واسمون فرم ایجاد میکنه که حتما باید با


<?php $this->endWidget(); ?>

بسته بشه. معادل html اون میشه :

<form id=”user-form” action=”/index.php?r=user/create” method=”post”>
</form>

خوب حالا بریم با نحوه ی قرار دادن اتریبیوتامونو نشون بدیم

<div class="row">
		<?php echo $form->labelEx($model,'user_id'); ?>
		<?php echo $form->textField($model,'user_id'); ?>
		<?php echo $form->error($model,'user_id'); ?>
	</div>

خط اول واسمون یه تگ label میندازه که مقدارش هست email . الان ایمیل نمایش میده. چرا؟چون توی مدل تنظیم کردیم.
خط دوم واسمون یه تگ input میسازه که مقدارش برابر هست با مقدار ارسالی از مدل . که چون توی اکشنمون new model() استفادده کردیم
پس اطلاعات ارسالی خالی است چون می خوایم یه کاربرجدید بسازیم.
قسمت آخر نمایش خطاست . در حالت عادی نمایش داده نمیشه . در صورتی که فیلد هامون دارای ولیدیشن باشن در صورتی که خلاف اون ولیدیشنا کاربر اطلاعات تایپ کنه ظاهر میشه و پیام مناسب میده بهمون.

سایر اتریبیوتامون به همین تریتیب هست.
نکته : قرار دادن ولیدیشن برای فورممون و این که ایمیل معتبر باشه . همچنین مدیریت وضعیت کاربر در کنترلر رو , هنگام ایجاد صفحه لاگین که از دیتابیس اطلاعات رو میخونه را آموزش خواهیم داد
خوب حالا یه سری دیتا وارد می کنیم .

 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

حالا که فورممونو پر کردیم بر روی دکمه ی create کلیک میکنیم

هنگامی که کلیک میکنیم فورممون به همراه اطلاعات وارد شده پست میشه به اکشن create

if (isset($_POST['User'])) {
            $model->attributes = $_POST['User'];
            if ($model->save())
                $this->redirect(array('view', 'id' => $model->id));
        }

خوب اطلاعات پر شده با

$_POST['user']

دریافت میشن. خوب برگردیم به کد
با if چک میکنیم که آیا اطلاعات پست شده اند یا نه پس از چک کردن این موضوع با استفاده از پروپرتیه attributes تمام اطلاعات را در جای مناسب خود قرار میدهد(به صورت اتومات ) و با متد save() ذخیره میکنه داخل دیتابیسمون.
تموم: اطلاعات ذخیره شد. پس از ذخیره به ویوی view رفته و ا طلاعات ذخیره شده را نمایش میدهد
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,
تصویری که میبینید.

خوب این صفحه توسط اکشن actionView و ویوی view نمایش داده شده است . که در جلسه بعدی توضیح داده میشه .

در جلسات بعدی ادامه ِ آموزش ها رو با ما دنبال کنید
موفق و پیروز باشین

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *