در قسمت های قبلی با اکشن های 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 میفرستیم.
دقیقا مثل اکشن ثبت اطلاعاتو به ویوی فورم ارسال میکنیم
breadcrumbs=array(
'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 id; ?>
renderPartial('_form', array('model'=>$model)); ?>
در فورم شما اگه دقت کنین
میبینین که اون قسمتی که تکست باکسمونو ایجاد میکنه هم $model را داریم هم اتریبیوته مونو
textField($model,'email',array('size'=>60,'maxlength'=>250)); ?>
سیستم به این صورت مقدار email را در value ی تکس باکس قرار میده
http://localhost:1007/index.php?r=user/update&id=1
شکل زیر را ببینید
سیستم اطلاعاتو به راحتی در محل مورد نظر قرار میده.
پس از تغییر میتونین 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 خیلی آسووون و راحت اطلاعاتتونو مدیریت کنین