loading...
آموزش فریم ورک Yii
امیر بازدید : 64 جمعه 14 خرداد 1395 نظرات (0)

یکی دیگه از بخش هایی که باید حالت پیش فرض اونو تغییر بدیم آدرس URL هامون هست اگه دقت کرده باشین تا به اینجا آدرس های ما به این صورت هست که index.php ابتدای آنها قرار دارند. http://localhost:1007/index.php?r=user/admin خوب برای غیر فعال کردن index.php باید تنظیماتمون در main.php تغییر بدیم. برای اینکار باید دوکار انجام بدیم اول اینکه باید در main.php در قسمت component باید urlManager را فعال کنیم و همچنین در صورتی که سرور شما apache هست فایل .htaccess و برای سرور های iis باید web.config را در روت سایت قرار دهید . خوب به main.php میریم و در قسمت component باید کد زیر را قرار دهیم 'urlManager' => array( 'urlFormat' => 'path', 'showScriptName' => false, 'caseSensitive' => false, 'rules' => array( '/' => '/view', '//' => '/', '/' => '/', ), ), در فایل .htaccess باید کد زیر را وارد نمایید RewriteEngine on # if a directory or a file exists, use it directly RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d # otherwise forward it to index.php RewriteRule . index.php و برای web.config کد زیر webconfig خوب حالا آدرس زیر را وارد کنید و نتیجه رو ببینید . http://localhost:1007/user/index آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework, با تشکر از شما

امیر بازدید : 90 شنبه 08 خرداد 1395 نظرات (0)

در قسمت قبل تونستیم با استفاده از اطلاعاتی که در دیتابیس داریم به سایت وارد بشیم.
رمزی که ما ذخیره میکردیم بسیار ساده بود و در دیتابیس به همان شکل ذخیره میشد.
برای امنیت سایت و امنیت اطلاعات کاربر رمز عبور را باید رمز نگاری کنیم
با استفاده از متد های رمز نگاری مثل crypy یا sh1 و .. میتونیم اطلاعات را رمز کنیم.
نحوه ی ذخیره و استفاده از دیتای رمز شده را در این بخش بررسی میکنیم
ابتدا نحوه ی رمز کردن رمز عبور , هنگام ثبت کاربر : actionCreate() باید رمزی که وارد میشرو با استفاده از یک مقدار ثابت رمز کنیم
متد رمز شده در دیتابیس ذخیره میشه و هنگامی که عملیات بازیابی اطلاعات را انجام میدهیم userIdentity
رمز عبور کاربر را با همان مقدار ثابتی که رمز کردیم , رمز میکنیم و با مقداری که در دیتابیس ذخیره شده است مقایسه میکنیم.
در صورتی که برابر بود به این معنی است که کاربر رمز عبور را درست وارد کرده است.
خوب ابتدا در کنترلر site و در اکشن actionCreate() به نگاه اجمالی میکنیم

$model->attributes = $_POST['User'];

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

$password = $_POST['User']['password'];

خوب من رمز ارسالی رو در متغییر password ریختم
حالا باید مقدار ثابتی که قراره باهاش رمزنگاریو انجام بدیم دریافت کنیم

$salt = $_POST['User']['email'];

من ایمیل ارسالی کاربر را به عنوان مقدار ثابت دریافت کردم.
توجه داشته باشین هر کاربری که ایجاد میشه رمز عبور ارسالیش با استفاده از ایمیلش رمز میشه
با تابع crypt عملیات رمز نگاری را انجام میدیم

$crypt = crypt($password, $salt);

الان ما رمز عبوری ارسالی را با مقدار ثابتمون رمز کردیم
حالا کاری که باید انجام بدیم اینه که این رمز ایجاد شدرو به مدلمون اختصاص بدیم

$model->password = $crypt;

با کد بالا ما رمز ایجاد شدرو در پسورد ریختیم و ذخیره میکنیم
. اکنون برین یه کاربر بسازین و در دیتابیس ببینین چه اتفاقی افتاده

من کاربری با ایمیل info@goyii.ir و رمز عبور ۱۲۳۴۵۶ ساختم
نتیجرو ببینین
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

خوب الان ما با نام کاربری و رمز عبوری که ساختیم اگر لاگین کنیم بهمون ارور میده
ما باید هنگامی که رمز عبور و نام کاربری رو چک میکنیم رمزنگاریو اعمال کنیم
بخش دیگه ای که باید بررسی کنیم useridentity هست
فولدر component و فایل useridentity

ما قبلا کاربر را با email , password پیدا میکردیم
حالا ابتدا ما کاربر را با ایمیل چک میکنیم
اگر کاربری وجود نداشت که ارور میدهیم
در صورتی که وجود داشت رمز عبوری که قبلا رمز کردیم را بازیابی میکنیم
بعد رمز ارسالیه کاربر را با ایمیلش رمز میکنیم
نتیجه را با چیزی که بازیابی کردیم مقایسه میکنیم
در صورتی که برابر بودند کاربر احراز هویت شده درصورتی که برابر نبودند که پیام مناسب را میدیم
کد زیر حاصل کار ماست

public function authenticate() {
$users = User::model()->findByAttributes(array('email' => $this->username));
$password = $users->password;
$salt = $users->email;
$hash = crypt($this->password, $salt);
if (!isset($users))
$this->errorCode = self::ERROR_USERNAME_INVALID;
elseif ($password !== $hash)
$this->errorCode = self::ERROR_PASSWORD_INVALID;
else
$this->errorCode = self::ERROR_NONE;
return !$this->errorCode;
}

حالا به راحتی میتونین وارد سایت شوید با امنیت رمز عبور

           
امیر بازدید : 67 جمعه 07 خرداد 1395 نظرات (0)

تا این جای کار ما با نحوه ی ثبت , ویرایش , نمایش , حذف که به crud معروف هستن آشنا شدیم
هچنین با ویجت های فریم ورک Yii مانند cgridview , clistview cdetailview و... آشناشدیم و کار کردیم.
توی این قسمت میخوایم نحوه ی ورود به سایت از طریق اطلاعات ذخیره شده در دیتابیسمون را آموزش بدیم.
اگه یادتون باشه با نحوه ی بازیابی اطلاعات در اکشن های ویو و آپدیت آشنا شدیم.


User::model()->findByPk($id);


با این کد شما با استفاده از شناسه یا همون کلید اصلی میتونین به اطلاعات یک کاربر دسترسی پیدا کنین.
حالا می خوایم با کدی آشنا بشیم که بازه ی جستجوی ما رو بیشتر کنه. یعنی بتونیم با استفاده از یه سری اطلاعات مثلا ایمیل به اطلاعات کاربر دسترسی پیدا کنیم.

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

خوب
اول اینکه چطوری با استفاده از فریم ورک Yii اطلاعاتو از دیتابیس بخونیم.

User::model()->findByAttributes(array("email"=>"test@test.test","password"=>"123456"));

با استفاده از این دستور شما در جدول user کاربری با ایمیل test@test.test و رمز عبور ۱۲۳۴۵۶ را جستجو میکنین. معادل کوئریه زیر

select * from user where email="test@test.test" and password=123456

۸۰ درصد اوکی شد.
خوب اگه دقت کنین الان توی سایت ما با استفاده از نام کاربری و رمز عبور admin - admin یا demo - demo وارد سایت میشم.
بریم که داشته باشیم .
قسمت هایی که در ورود به سایت دخیل هستند عبات اند از :

  • actionLogin در کنترلر site
  • login در فولدر views فولدر site
  • loginForm در مدل ها
  • تنظیم دیتابیس در فولدر configو فایل database.php
    که ما قبلا تنظیم کردیم
  • فایل UserIdentity در فولدر components

وقتی شما آدرس صفحه ی ورود به سایت را باز میکنین

http://localhost:1007/index.php?r=site/login

کنترلر site صدازده میشه و اکشن login اجرا میشه
کد زیر actionLogin

public function actionLogin() {
$model = new LoginForm;

// if it is ajax validation request
if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
echo CActiveForm::validate($model);
Yii::app()->end();
}

// collect user input data
if (isset($_POST['LoginForm'])) {
$model->attributes = $_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if ($model->validate() && $model->login())
$this->redirect(Yii::app()->user->returnUrl);
}
// display the login form
$this->render('login', array('model' => $model));
}

ابتدا مدل loginForm ایجاد شده . (مدلشم چیز خاصی نیست. چند خط بعد توضیحش میدیم). اگه درخواست ajax پست شده باشه مدل ما رو اعتبار سنجی میکنه .
فعلا راجع به این خط نمی خوایم حرف بزنیم.

خط بعدی که مهم هست . مثل actionCreate و actionUpdate هست .
اگه فورمی پستشده باشه میره مدل رو اعتبار سنجی میکنه و بعد کاربر را به صفحه ای که قرار داشته ارجا میده.(دقیقا ما جایی که این اعتبار سنجی انجام میشه را بررسی میکنیم.)
اگر پست نشده باشه میره ویوی login را نمایش میده . که در فولدر views هست.

خوب اول مدل loginForm رو ببینیم

public function actionLogin() {
$model = new LoginForm;

// if it is ajax validation request
if (isset($_POST['ajax']) && $_POST['ajax'] === 'login-form') {
echo CActiveForm::validate($model);
Yii::app()->end();
}

// collect user input data
if (isset($_POST['LoginForm'])) {
$model->attributes = $_POST['LoginForm'];
// validate user input and redirect to the previous page if valid
if ($model->validate() && $model->login())
$this->redirect(Yii::app()->user->returnUrl);
}
// display the login form
$this->render('login', array('model' => $model));
}

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


class LoginForm extends CFormModel

بحث بعدی تعریف پروپرتی هامونه که همون متغییر هامونن

public $username;
public $password;
public $rememberMe;

private $_identity;

username و password و rememberMe که معلومه واسه چیه دیگه.
_identity در متد authenticate استفاده میشه و اطلاعات کاربری که وارد شده در اون ذخیره میشه .
متد rules که قبلا توی مدل ها توضیح داده ایم هم مشخصه که قوانینی که برای پروپرتی هامون قرار دادیم


public function rules()
{
return array(
// username and password are required
array('username, password', 'required'),
// rememberMe needs to be a boolean
array('rememberMe', 'boolean'),
// password needs to be authenticated
array('password', 'authenticate'),
);
}

خط اول که میگیم نام کاربری و رمز عبور اجباریه
خط بعدی میگیم که مرا به خاطر بیاور بولینه : true , false
و خط آخر : بحث احراز هویتون هست . که میره متد authenticateرا اجرا میکنه
.

بحث بعدیمون attributeLabels هست . که همون نام پروپرتی هامونه که در ویو نمایش داده میشه
الان username , password رو ننوشته که من اضافه کردم و حاصل شد کد زیر

public function attributeLabels() {
return array(
'rememberMe' => 'مرا به خاطر بیاور',
'username' => 'نام کاربری',
'password' => 'رمز عبور',
);
}

بحث بعدی متد login هست که بخش مهم هست

if ($this->_identity === null) {
$this->_identity = new UserIdentity($this->username, $this->password);
$this->_identity->authenticate();
}
if ($this->_identity->errorCode === UserIdentity::ERROR_NONE) {
$duration = $this->rememberMe ? 3600 * 24 * 30 : 0; // 30 days
Yii::app()->user->login($this->_identity, $duration);
return true;
} else

چون این متد قبل از authenticate اجرا میشه , ا.ل توضیح دادم.
اگه به اکشن login در کنترلر site نگاه کنین. میبینین که پس از این که اطلاعات پست شد
این کد اجرا میشه

$model->validate() && $model->login()

که validate میره rules در مدل رو چک میکنه
login میاد همین متد login در مدلمونو اجرا میکنه

خوب برگردیم روی متد لاگین
خط اول چک میکنه که _identity مقدار داره یا نه
اگه مقدار نداشت
میاد userIdentity را با استفاده از username , password ای که کاربر ارسال کرده صدا میزنه
این کجاست ؟
در فولدر components و فایل userIdentity

قسمتی که اطلاعات ارسالی کاربر باید از دیتابیس چک بشه , همین جاست ک
کدشو ببینید :

class UserIdentity extends CUserIdentity
{
/**
* Authenticates a user.
* The example implementation makes sure if the username and password
* are both 'demo'.
* In practical applications, this should be changed to authenticate
* against some persistent user identity storage (e.g. database).
* @return boolean whether authentication succeeds.
*/
public function authenticate()
{
$users=array(
// username => password
'demo'=>'demo',
'admin'=>'admin',
);
if(!isset($users[$this->username]))
$this->errorCode=self::ERROR_USERNAME_INVALID;
elseif($users[$this->username]!==$this->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
$this->errorCode=self::ERROR_NONE;
return !$this->errorCode;
}
}

 

اگه دقت کنین الان متغییر user رو میبینین که دوتا مقدار داره
آره همینه
demo demo , admin admin
از همینجا چک میشه
$this->username یعنی نام کاربری ای که کاربر ارسال کرده
$this->password یعنی رمز عبوری که کاربر ارسال کرده


if(!isset($users[$this->username]))
$this->errorCode=self::ERROR_USERNAME_INVALID;
elseif($users[$this->username]!==$this->password)
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
$this->errorCode=self::ERROR_NONE;
return !$this->errorCode;

!isset($users[$this->username])
میگه که آیا نام کاربری ای که کاربر ارسال کرده در متغییر $users وجود نداره ؟
پس ارور بده که نام کاربری نا معتبر است

$users[$this->username]!==$this->password)
میگه اگه نام کاربری ای که ارسال شده با رمز عبور ارسال شده یکی نیست ارور بده که رمز عبور نا معتبر است
اگه هیچ کدوم نبود اروری نده

پس از این مراحل میاد بر میگرده به مدل loginModel و متد login()


$this->_identity = new UserIdentity($this->username, $this->password);
$this->_identity->authenticate();

پس از اینکه userIdentity اجرا شد مقدار ارور را بر میگردونه
میاد متد authenticate را اجرا میکنه


public function authenticate($attribute, $params) {
if (!$this->hasErrors()) {
$this->_identity = new UserIdentity($this->username, $this->password);
if (!$this->_identity->authenticate())
$this->addError('password', 'Incorrect username or password.');
}
}

این بخش هم تقریبا همون مراحل قبلو انجام میده اگه ارور داشت پیام میده .

خوب جایی که ما باید تغییر بدیم کجاست؟
همون userIdentity کافیه که یه کوئری بزنیم اطلاعات دیتابیسمونو با استفاده از پارامتر های ارسالی بخونیم اگر وجود داشت کاربر لاگین میشه و اگر نشد که وارد نمیشه

ما username , password رو از کاربر میگیریم
username همون ایمیلمونه
حالا میخوایم یه کوئری بزنیم اطلاعاتو از دیتابیس بخونیم با ایمیل و رمز عبوری که کاربر میفرسته

$user=User::model()->findByAttributes(array('email'=>$this->username,'passwod'=>$this->password))
با استفاده از اطلاعات ارسالی کاربر ما کوئری زدیم
اگر $user خالی باشه که باید پیام بدیم کاربر یافت نشد
اگر پر بود میگیم که اوکیه دیگه , لاگین شو :D

خوب من کد userIdentity رو به این شکل تغییر میدم

public function authenticate()
{
$users = User::model()->findByAttributes(array('email' => $this->username, 'password' => $this->password));

if (!isset($users))
$this->errorCode = self::ERROR_USERNAME_INVALID;
elseif ($users->password !== $this->password)
$this->errorCode = self::ERROR_PASSWORD_INVALID;
else
$this->errorCode = self::ERROR_NONE;
return !$this->errorCode;
}

فکر نمیکنم نیاز به توضیح باشه
الان شما با نام کاربری و رمز عبوری که در دیتابیس دارین میتونین وارد سایت بشین

موفق و پیروز باشین

           
امیر بازدید : 66 سه شنبه 04 خرداد 1395 نظرات (0)

در قسمت های قبلی با اکشن های view , index , admin , create آشنا شدیم.
از اکشن های باقی مونده ویرایش و حذف مونده که توی این جلسه اونارو بررسی میکنیم.
ابتدا اکشن ویرایش actionUpdate
همانند اکشن ثبت اطلاعاتی را به فرم ارسال میکنیم و پس از پست اون اطلاعات , اون هارو در دیتابیسمون ذخیره میکنیم.
در actionCreate شما یه مدل و new میکردین و ارسال میکردین. توی این اکشن شما اطلاعاتی که میخواهیدو با استفاده از کلید اصلیشپیدا میکنین و اونو به فرم ارسال میکنین.
در کنترلرمون : userController اکشن مورد نظرمونو میاریم :

public function actionUpdate($id)
{
$model=$this->loadModel($id);

// 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('update',array(
'model'=>$model,
));
}

این اکشن همانند اکشن view یه ورودی دریافت میکنه که شناسه یا کلید اطلاعاتمونه . با استفاده از

$model=$this->loadModel($id);

که قبلا هم باهاش اشنا شده بودیم کد زیر را اجرا میکنه :

User::model()->findByPk($id)

در واقع با استفاده از کد بالا شما این کوئری را اعمال کرده اید

select * from user where id=$id

پس از این که اطلاعاتو خوندیم با استفاده از render اونارو به ویوی update میفرستیم.
دقیقا مثل اکشن ثبت اطلاعاتو به ویوی فورم ارسال میکنیم

'Users'=>array('index'),
$model->id=>array('view','id'=>$model->id),
'Update',
);

$this->menu=array(
array('label'=>'List User', 'url'=>array('index')),
array('label'=>'Create User', 'url'=>array('create')),
array('label'=>'View User', 'url'=>array('view', 'id'=>$model->id)),
array('label'=>'Manage User', 'url'=>array('admin')),
);
?>

Update User



در فورم شما اگه دقت کنین
میبینین که اون قسمتی که تکست باکسمونو ایجاد میکنه هم $model را داریم هم اتریبیوته مونو



سیستم به این صورت مقدار email را در value ی تکس باکس قرار میده

http://localhost:1007/index.php?r=user/update&id=1

شکل زیر را ببینید
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

سیستم اطلاعاتو به راحتی در محل مورد نظر قرار میده.
پس از تغییر میتونین save را بزنین و اطلاعات به actionUpdate ارسال میشه و با استفاده از $model->attributes ذخیره میشه .
به همین راحتی .

اکشن بعدی اکشن حذف است actionDelete

public function actionDelete($id)
{
$this->loadModel($id)->delete();

// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}

هنگامی که شما در مدیریت actionadmin بر روی تصویر حذف کلیک میکنین . اطلاعات از طریق ajax به اکشن حذف ارسال میشه .
سیستم با استفاده از شناسه ارسالی رکورد مورد نظر را پیدا میکنه و عملیات حذف رو انجام میده
ابتدا همانند اکشن های view و update اطلاعات خوانده میشه
User::model()->findByPk($id)
سپس با استفاده از delete اونا حذف میشن.
معادل کوئریه زیر

delete from user where id = $id

این بود عملیات crud با استفاده از فریم ورک yii خیلی آسووون و راحت اطلاعاتتونو مدیریت کنین

امیر بازدید : 68 سه شنبه 04 خرداد 1395 نظرات (0)

یه مشکلی که اکثر سایتایی که سرورشون iis هست دارن استفاده از کلمات فارسی در آدرس URL هست .
برای اینکه بتونین از کلمات فارسی استفاده کنیم باید در web.config تنظیمات مربوطه را قرار دهیم.
این تنظیمات توی سرور های لینوکسی در htaccess قرار داره که به راحتی توسط لینوکس مدیریت میشن.
برای اینکه مشکلتون حل بشه باید مراحل زیر را انجام بدین

۱. در IIS Manager سرور پس از انتخاب نام سایت از بخش Sites بر روی ماژول URL Rewrite دو بار کلیک کرده تا وارد تنظیمات آن شوید. ( در صورتی که این ماژول را نمی بینید بر روی سرور شما نصب نیست و می توانید توسط Web Platform Installer آن را نصب کنید.) پس از ورود به تنظیمات URL Rewrite از سمت راست صفحه بر روی گزینه View Server Variables کلیک کنید. (اگر این گزینه را نمی بینید نسخه ماژول URL Rewrite شما کمتر از ۲ می باشد و برای استفاده از این امکان می بایست به نسخه ۲ ارتقا دهید.) پس از ورود به این بخش از سمت راست صفحه بر روی گزینه Add کلیک کرده و در کادر باز شده مقدار REQUEST_URI را اضافه کنید.
۲٫ پس از افزودن مقدار REQUEST_URI می بایست کد زیر را به فایل web.config خود اضافه کنید.

کد:
<code>
<serverVariables>
<set name="REQUEST_URI" value="{UNENCODED_URL}" replace="true" />
</serverVariables>
<code/>

 


در نهایت محتویات فایل web.config شما به شکل زیر خواهد شد:

 

کد:
<code>
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="WordPress Rule" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
<serverVariables>
<set name="REQUEST_URI" value="{UNENCODED_URL}" replace="true" />
</serverVariables>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
<code/>

 

پس از انجام این موارد امکان استفاده از کلمات فارسی برای شما فراهم خواهد شد.

این تنظیمات برای ورد پرس و جوملا و سایر سیستم های مدیریت محتوا به همین شکل اعمال میشه و جواب میده

این مقالرو من از سایت زیر نوشتم.

منبع:وی بی ایران

امیر بازدید : 70 سه شنبه 04 خرداد 1395 نظرات (0)

تا به اینجای کار با اکشن های view , create , index آشنا شدیم
در این قسمت مدیریت کلیه دیتاهمون یا همون اکشن actionAdmin رو بررسی میکنیم

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

 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,
تصویر بالا بخش مدیریتی ماست که می توانید اطلاعات را حذف , ویرایش کنین
همچنین می توانید اطلاعات کلیه هر رکورد را ببینی(علامت ذره بین)
همچنین میتونین با استفاده از تکست باکسایی که قرار داره طبق هر ستون جستجو کنین

خوب بریم توی کنترلر و اکشن ادمین actionAdmin


public function actionAdmin()
{
$model=new User('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['User']))
$model->attributes=$_GET['User'];

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


با استفاده از کد با لا علاوه بر این که دیتا های جدول کاربرو به ویو میفرستیم یه مدل ایجاد میکنیم که بخش جست جو را ارسال میکنه
مدلمون به این صورت تعریف شده که از کلیه ی اطلاعات جدولمونو با استفاده از

$model=new User(search)

دریافت می کنیم.
اگه به مدلتون یه سر بزنین میبینین که یه متد با نام سرچ داره

public function search() {
// @todo Please modify the following code to remove attributes that should not be searched.

$criteria = new CDbCriteria;

$criteria->compare('id', $this->id);
$criteria->compare('email', $this->email, true);
$criteria->compare('password', $this->password, true);
$criteria->compare('first_name', $this->first_name, true);
$criteria->compare('last_name', $this->last_name, true);
$criteria->compare('status', $this->status);

return new CActiveDataProvider($this, array(
'criteria' => $criteria,
));
}

این قسمت امکان جستجو در اطلاعاتمونو مدیریت میکنه
به صورت کلی یه سری داده (همونایی که توی تکست باکس میزنین) را دریافت میکنه و بر اساس اونا فیلتر میکنه.
فعلا در همین حد داشته باشین . جلوتر که بریم بر اساس نیاز هامون بیشتر از این قسمت اسنفاده میکنیم.

توی قسمت ویو همانند clistview و cdetail view ماژولی دارین که کار را برای ما آسون کرده .نام این
ماژول cgridview هست
کد زیر

'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'email',
'password',
'first_name',
'last_name',
'status',
array(
'class'=>'CButtonColumn',
),
),
)); ?>

خوب توی cgridview علاوه بر قسمتی که داده هارو دریافت میکنه یه قسمت دیگه هم داره برای جستجو یا همون فیلتر
نکته ی بعدی شما مثل clistview میتونین ستون هایی که می خواین نمایش داده بشرو مشخص کنید نکته های دیگه ای هم داره که بعدا اطلاع میدم بهتون به وقتش
کد های بالا رو من به این شکل تغییر میدم

);

$this->menu=array(

array('label'=>'ثبت کاربر', 'url'=>array('create')),
);

Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
$('.search-form').toggle();
return false;
});
$('.search-form form').submit(function(){
$('#user-grid').yiiGridView('update', {
data: $(this).serialize()
});
return false;
});
");
?>

مدیریت کاربران

 

 

'id'=>'user-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(

'email',

'first_name',
'last_name',

array(
'class'=>'CButtonColumn',
),
),
)); ?>

 

نتیجه میشه تصویر زیر
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

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

امیر بازدید : 79 دوشنبه 03 خرداد 1395 نظرات (0)

اکشن بعدی ای که می خوایم بررسی کنیم 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

'Users'=>array('index'),
'Create',
);

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

Create User



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

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


'id'=>'user-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,
)); ?>

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

?php $this->endWidget(); ?

بسته بشه. معادل html اون میشه :
<form id="user-form" action="/index.php?r=user/create" method="post">
</form>

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

?php echo $form->labelEx($model,'email'); ?
?php echo $form->textField($model,'email',array('size'=>60,'maxlength'=>250)); ?
?php echo $form->error($model,'email'); ?

خط اول واسمون یه تگ 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 نمایش داده شده است . که در جلسه بعدی توضیح داده میشه .

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

امیر بازدید : 84 دوشنبه 03 خرداد 1395 نظرات (0)

خوب توی قسمت قبل ما به وسیله ی gii تونستیم اولین مدل و کنترلرمون به همراه ویو هاشو ایجاد کنیم. حالا می خوایم  به صورت عملی ببینیم چه اتفاقایی میوفته که یه ویو با استفاده از مدل و کنترلر در سایت به نمایش میاد.اول میریم سراغ کنترلر usercontrollerابتدای صفحه  کد های زیر و داریم که ما فعلا باهاشون کاری نداریم. به وقتش توضیح میدیم اینا چی هستن. public $layout='//layouts/column2';/*** @return array action filters*/public function filters(){return array('accessControl', // perform access control for CRUD operations'postOnly + delete', // we only allow deletion via POST request);}چیزی که ما میخوایم صحبت کنیم الان بحث دسترسی ها به اکشنامونه. کد های زیرو ببینین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('*'),),);}خوب ما توی کنترلرمون چندتا اکشن داریم. اسم اکشنامون :index,delete,update,create,view,admin هست.خوب اینا هرکدوم یه دسترسی ای دارن به این معنی که کدوم اکشنارو کیا میتونن ببینن.خوب کد بالایه آرایه داریم که داخلش ۴ آرایست.نکته : اصطلاحات زیر برای سطح دسترسی هست که هرکدوم یه معنی و مفهوم دار:* (ستاره) به این معنیه همه کاربران@(اتساین) به معنیه کاربرایی که وارد سایت شدن . کاربرای لاگین شده.admin همون مدیر سایتهدر آینده نحوه ی نقش دادن به کاربرارو بررسی میکنیم و آموزش میدیم . اینطوری میتونین اکشناتون محدود به نقش هایی که دارین میکنین.خوب اول میریم سراغ خط آخر (آرایه ی آخر )array('deny', // deny all users'users'=>array('*'),),خیلی راحت . داره میگه کیا اجازه ی دسترسی به همه اکشنا ندارن؟ deny به معنیه عدم دسترسی . جواب چی داده ؟ گفته * یعنی همه ی کاربرا.در واقع میگه هیچ کس اجازه دسترسی به اکشنارو نداره مگر اینکه بهش دسترسی داده شده باش.array('allow', // allow all users to perform 'index' and 'view' actions'actions'=>array('index','view'),'users'=>array('*'),),اینم داره میگه همه ی کاربرا به اکشن های view و index دسترسی دارن.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'),),و در آخر مدیریت سایت که در اکشن admin قرار داره و امکان حذف فقط و فقط توسط admin صورت میگیریه.این از دسترسی ها .خوب برای تنوع برین این آدرسو توی مرورگرتون بزنین:http://localhost:1007/index.php?r=user/indexتصویری که مشاهده میکنین به این صورته : دقت کنین که اکشن index توسط تمام کاربران قابل مشاهده است. آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,این اکشن چه کار میکنه ؟برای اینکه متوجه بشین ابتدا اکشن index رو میبینیم :public function actionIndex(){$dataProvider=new CActiveDataProvider('User');$this->render('index',array('dataProvider'=>$dataProvider,));}خوب کد بالا ابتدا اومده به وسیله ی CActiveDataProvider اطلاعات موجود در مدل User را در متغییرdataProvider میریزه و سپس به ویو ی index ارسال میکنه.CActiveDataProvider چیست؟ کلاسیه که از طریق اون تمام اطلاعات موجود در مدل را (اطلاعات موجود در دیتابیس) را میخونه و در آبجکت ذخیره میکنه.$this->renderهم که قبلا توضیح دادیم. پارامتر هاییو ارسال میکنه به ویو .پس ما در این اکشن چی کار میکنیم؟ داده هارو میریزیم توی متغییر و میفرستیم به ویو . به همین راحتی.دیگه نمیخوایم کوئری بزنیم و اطلاعات رو بخونیم به وسیله ی CActiveDataProvider .خوب چون ما الان دیتایی نداریم چیزی نشون نمیده . میزنه No results found.حالا فکر کن اگه دستی میخواستیم کوئری بزنیم باید یه کوئری میزدیم بخونیم از دیتابیس بعد چک کنیم که آیا خالی هست یا نه اگه خالی بود این کارو کن اگه نبود اون کاروبگذریم. بریم ببینیم توی ویو چه کاری انجام شده .برای نمایش ویو کجا میرفتیم؟فولدر views فولدر user فایل index 'Users',);$this->menu=array(array('label'=>'Create User', 'url'=>array('create')),array('label'=>'Manage User', 'url'=>array('admin')),);?>

Users

'dataProvider'=>$dataProvider,'itemView'=>'_view',)); ?>خوب توی فایل ایندکس اطلاعات دیتا مون نمایش داده میشه .خط اول breadcrumbsمسریابی سایت هست. که مشخص میکنه ما در کجا قرار داریم من متنش و به لیست کاربران تغییر میدم .به جای Users مینویسم لیست کاربران.خط بعدی قرار دادن منو برای دسترسی راحت تر هست. اینجا به اکشن ثبت و مدیریت لینک دادیم که من اسم فارسیشونو مینویسم. کدمن تا الان این شکلی شده : 'لیست کاربران',);$this->menu = array(array('label' => 'ثبت کاربر', 'url' => array('create')),array('label' => 'مدیریت کاربران', 'url' => array('admin')),);?>

لیست کاربران

خط بعدی که خط مهمیه ماژول clistview هست . اطلاعاتی که با CActiveDataProvider استخراج میشرو برای نمایش میفرستیم به ماژول clistview این ماژول میاد اطلاعات رو به صورت اتوماتیک تفکیک میکنه و مثل حلقه ی for نمایش میده . 'dataProvider' => $dataProvider,'itemView' => '_view',));?>clistview اطلاعاتو از طریق متغییری که از اکشن ایندکس واسش ارسال کردیم dataProviderتوی صفتی که واسش تعریف شده با نام : dataProvider میریزه.خوب این شد حلقه ی for مون. حالا اگه دقت کنین یه صفتی داره با نام itemView یعنی قالب نمایش اطلاعات رو میره از فایل _view میخونه.در کنار فایل index.php یه فایل هست به نام _view.phpمحتویاتشو ببینیم:

::::::

 $data->getAttributeLabel('id') با این کد عنوان مدلتونو میخونه . همون نام ستون جدول دیتابیستون. توضیح و عملیش انتهای همین مطلب.$data->id با data به مدلتون و با چیرایی که بعد از -> نوشته شده به ستون های جدول دیتابیستون که میشه همون اتریبیوتای مدلتون دسترسی دارین.خوب حالا من دستی به دیتا بیسم یه اطلاعات اضافه میکنم. آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,خوب حالا آدرس زیرو بزنین:http://localhost:1007/index.php?r=user/index آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,خوب حالا بریم سر مدل تا بهتون بگم attributes ها چین و ستون های جداولو چطوری میتونیم هندل کنیم.مدلتونو از فولدر model باز کنینکد زیر و نگاه کنینpublic function attributeLabels(){return array('id' => 'ID','email' => 'Email','password' => 'Password','first_name' => 'First Name','last_name' => 'Last Name','status' => 'Status',);}خوب متد attributeLabel ستون های جدولتونو نشون میده و یه نام واسش میزاره که با همون نام نمایش میده .من attribute هامو اینطوری تغییر میدم. دوباره صفحه ی مرورگرتونو رفرش منین آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,متوجه شدین؟جلسات بعدی با اکشنای دیگه در خدمتتونیم.سوالی بود به paeize70.com@gmail.com ایمیل بزنین.  

امیر بازدید : 89 دوشنبه 03 خرداد 1395 نظرات (0)

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

public function actionView($id)
{
$this->render('view',array(
'model'=>$this->loadModel($id),
));
}

این اکشن حتما باید یک آرگومان دریافت کنه
این آرگومان آی دی کاربر ذخیره شده در دیتابیس هست.
که اون آی دی رو به متدی با نام loadModel ارسال میکنه این متد چیکار میکنه ؟
کد زیر رو ببینید

public function loadModel($id)
{
$model=User::model()->findByPk($id);
if($model===null)
throw new CHttpException(404,'The requested page does not exist.');
return $model;
}

این متد هم یه آرگومان دریافت میکنه .
$model=User::model()->findByPk($id)

این کد معادل با این کوئری هست : select * from user where id = $id
شما در فریم ورک Yii به راحتی میتوانید کوئری های خود را ازین طریق اعمال نمایید.
به این صورت که ابتدا نام مدل سپس model()-> و در آخر متد هایی که برای این اقدامات قرار داده شده است . مانند:
findByPk() که برای دسترسی به اطلاعات بر اساس کلید اصلی جدول می باشد
findAll() برای دسترسی به تمام اطلاعات جدول
, غیره که به مرور با آنها آشنا میشیم
خوب پس از اجرای کوئریه بالا چک میکنیم که آیا در جدول ما با اون آی دی اطلاعاتی پیدا شده است یا نه
اگر نتیجه null بود که پیام خطا میدهد کهThe requested page does not exist
اگر نتیجه خالی نبود اطلاعاتو بر میگردونه

برگردیم به actionView. خوب اطلاعات که فراخونی شد اونو با استفاده از متد render از طریق متغییر model به صفحه ی view میفرستیم.
خوب حالا چطوری نمایش بدیم اطلاعاتو
فایل view.php را از مسیر views ->user باز میکنیم
کد زیر


'Users'=>array('index'),
$model->id,
);

$this->menu=array(
array('label'=>'List User', 'url'=>array('index')),
array('label'=>'Create User', 'url'=>array('create')),
array('label'=>'Update User', 'url'=>array('update', 'id'=>$model->id)),
array('label'=>'Delete User', 'url'=>'#', 'linkOptions'=>array('submit'=>array('delete','id'=>$model->id),'confirm'=>'Are you sure you want to delete this item?')),
array('label'=>'Manage User', 'url'=>array('admin')),
);
?>

View User #

'data'=>$model,
'attributes'=>array(
'id',
'email',
'password',
'first_name',
'last_name',
'status',
),
)); ?>

 

breadcrumb , menu رو که قبلا توضیح دادیم .
فریم ورک یی برای نمایش جزئیات ماژولی به نام cdetailview داره که به راحتی میشه اطلاعاتو نمایش بده
کافیه متد data رو با مدلی که از اکشن ارسال کردید پر کنید و تعیین کنید که کدام اتریبیوت های مدلتونو میخواین نمایش بدین.
در حالت عادی شکل زیر در مرورگر نمایش داده میشود

این تصویر را ببینید
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

خوب ما می خوایم یه تغییراتی اعمال کنیم
من کدم رو با این اطلاعات ویرایش میکنم

 

<h1> <?php echo $model->first_name . " " . $model->last_name; ?></h1>

<?php
$this->widget('zii.widgets.CDetailView', array(
'data' => $model,
'attributes' => array(
'first_name',
'last_name',
'email',
),
));
?>

حاصل کار میشه این تصویر
 آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

به همین راحتی , به همین خوش مزگی

در ادامه منتظر سایر آموزشا باشین
موفق باشین

امیر بازدید : 101 یکشنبه 02 خرداد 1395 نظرات (0)

توی این جلسه می خوایم mvc رو با یه مثال ساده توضیح بدیم.

روال کار به این صورته که یه جدول  توی دیتابیسمون می سازیم . به کمک gii مدل و کنترلر  و ویو هامونو می سازیم .

بعد  از اکشن های کنترلرمون عملیات  درج , ویرایش , حذف و نمایش رو انجام میدیم. همون عملیات crud خودمون.

خوب ابتدا من یه جدول توی دیتابیسم به اسم  user می سازم. ستون های  این جدولم شامل id,first_name,last_name,email,password,status هست

خوب شناسمون که باید کلید اصلی باشه و اتو اینکریمنت , نام و نام خانوادگیه کاربر , یه ایمیل ورمز عبور و در نهایت وضعیت کاربر برای فعال سازی کاربران .

اولین کار قبل از هر کاری ما پروژمونو به دیتابیسمون وصل میکنیم.

توی فولدر protected به فولدر کانفیگconfig میریم . فایل  database.php  رو که باز کنید. میتونین  اطلاعاتتونو وارد کنین.

تنظیمات اولیه به صورت کامنت هست که وقتی تنظیماتو انجام میدیم به این شکل میشه .

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

خوب حالا میریم جدولو ایجاد کنیم.


CREATE TABLE IF NOT EXISTS `user` (
`id` int(11) NOT NULL,
`email` varchar(250) DEFAULT NULL,
`password` varchar(250) DEFAULT NULL,
`first_name` varchar(250) DEFAULT NULL,
`last_name` varchar(250) DEFAULT NULL,
`status` int(11) DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `user`
ADD PRIMARY KEY (`id`), ADD KEY `id` (`id`);
ALTER TABLE `user`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

خوب جدولمونو ساختیم.
میریم که با gii اشنا بشیم.
gii ابزاریه که فریم ورک یی فراهم کرده تا با اون بتونین به راحتی مدل ها و کنترلر هاتونو ایجاد کنین. پس از ایجاد مدل شما میتونین به وسیله ی gii برای مدل هاتون کنترلر ایجاد کنین که به صورت پیش فرض اکشن های حذف و ویرایش و ثبت و مدیریت داده هاتونو داره .
خوب برای فعال سازی gii باید توی فولدر config فایل main.php رو باز بکنین و اونو از حالت کامنت در بیارین . خط شماره ۲۴
نکته اینکه برای ورود به gii باید یه رمز عبور تعیین کنین.

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

برای ورود به gii باید توی مرور گرتون بعد از ایندکس بنویسین gii


http://localhost:1007/index.php?r=gii/default/login

در صفحه ای که باز میشه رمز عبوری که انتخاب کردینو وارد کنین تا وارد محیط gii بشین.

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

 

پس از ورود باید این صفحه رو ببینید

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

 

به gii خوش آمدید.

یه نکته ی امنیتی بگم

اینکه پس از اینکه پروژتون تکمیل شد و آپلود کردین  این  gii رو غیر فعال کنین که  مشکلی واستون پیش نیاد.

خوب اینجا  ۵ تا منو داریم که ما از ۳ تاش فعلا استفاده میکنیم.

اولینش : model generator

برای ایجاد مدل هامون

دوم: crud generator برای ایجاد کنترلر و اکشن های دیفالت یی

پس از  استفاده از این  منو سیستم ویو هاش رو هم ایجاد میکنه.

سوم: controller generator  برای ایجاد کنترلر دلخواه.

 

mvc

خیلی ساده:  هرچی که مربوط به دیتابیس میشه : نام جدول : ریلیشن ها و .. میشه مدل M

هرچی که  قراره نمایش داده بشه میشه ویو V

هر چی که مدیریت میکنه بین این دوتارو میشه کنترلر C

مثلا شما میخواین کاربرای عضو سایتو  نمایش بدین : اطلاعات کجاست ؟ توی دیتابیس پس مدل میشه جدول کاربران

خوب میخوایم تعداد و اسامی را نمایش بدیم . پس یه کوئری میزنیم از مدلمون که همون جدول کاربرانمونه اطلاعات بر میداریم  میفرستیم به یه جایی که نمایش بده . این کوئری و فرستادنه میشه کنترلر و جایی که قرار نمایش بده میشه ویو .

بریم عملی  انجام بدیم تا ملتفت بشیم .

برای ساخت مدل روی منوی model generator  کلیک میکنیم.

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

 

خیلی ساده table name میشه نام جدولی که میخواین  ازش مدل بسازین. اینجا من user وارد کردم

وقتی نام جدولو وارد کردین به صورت اتومات مدل رو سیستم میسازه

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

مدل ما شد User

خوب روی دکمه ی preview رو بزنین و سپس generate رو کلیک کنین.

مدلتون ایجاد شد.

یه نگاه به فولدر مدلتون بکنین.

 

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

array('email, password, first_name, last_name', 'length', 'max'=>250),
// The following rule is used by search().
// @todo Please remove those attributes that should not be searched.
array('id, email, password, first_name, last_name, status', 'safe', 'on'=>'search'),
);
}

/**
* @return array relational rules.
*/
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
);
}

/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'id' => 'ID',
'email' => 'Email',
'password' => 'Password',
'first_name' => 'First Name',
'last_name' => 'Last Name',
'status' => 'Status',
);
}

/**
* Retrieves a list of models based on the current search/filter conditions.
*
* Typical usecase:
* - Initialize the model fields with values from filter form.
* - Execute this method to get CActiveDataProvider instance which will filter
* models according to data in model fields.
* - Pass data provider to CGridView, CListView or any similar widget.
*
* @return CActiveDataProvider the data provider that can return the models
* based on the search/filter conditions.
*/
public function search()
{
// @todo Please modify the following code to remove attributes that should not be searched.

$criteria=new CDbCriteria;

$criteria->compare('id',$this->id);
$criteria->compare('email',$this->email,true);
$criteria->compare('password',$this->password,true);
$criteria->compare('first_name',$this->first_name,true);
$criteria->compare('last_name',$this->last_name,true);
$criteria->compare('status',$this->status);

return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}

/**
* Returns the static model of the specified AR class.
* Please note that you should have this exact method in all your CActiveRecord descendants!
* @param string $className active record class name.
* @return User the static model class
*/
public static function model($className=__CLASS__)
{
return parent::model($className);
}
}

 

حالا میریم که crud بسازیم به وسیله ی crud generator

ابتدا باید اسم مدلی که توی مرحله ی قبل ایجاد کردیم رو توی model class وارد کنیم.

بعدش اسم کنترلرمونو انتخاب کنیم اینجا  user

سپس preview  و در نهایت generate

مانند شکل زیر ک
آموزش فریمورک یی, آموزش فریم ورک یی, فریمورک یی, فریم ورک یی, فریمورکyii, فریم ورک yii, yiiframework, yii framework,

 

پس از این کار سیستم در فولدر کنترلر , userController را ایجاد میکنه

همچنین در فولدر ویو فولدری به اسم user ایجاد میکنه که شامل ویو هایی هست که توی تصویر میبینین.

 

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

 

توی جلسه ی بعد این بحث رو ادامه خواهیم داد .

با تشکر  . موفق باشین

تعداد صفحات : 20

درباره ما
Profile Pic
آموزش مرحله به مرحله فریم ورک Yii
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آمار سایت
  • کل مطالب : 197
  • کل نظرات : 0
  • افراد آنلاین : 2
  • تعداد اعضا : 1
  • آی پی امروز : 41
  • آی پی دیروز : 33
  • بازدید امروز : 118
  • باردید دیروز : 95
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 253
  • بازدید ماه : 360
  • بازدید سال : 2,335
  • بازدید کلی : 26,891