سلام
من میخام برای سلکت ها یک فیلتر بزارم طوری که هر کاربر فقط بتونه پست های خودش رو انتخاب کنه و میخام این فیلتر به صورت خودکار اجرا بشه .. فک کنم قبلا از scpos (یا همچین چیزی) استفاده میشد
ممنون میشم راهنمایی کنید.
میتونید از فیلترهای سفارشی استفاده کنید ولی ترجیحاً بهتره این کار رو با RBAC انجام بدین.
(03-10-1394، 06:07 ب.ظ)ADMIN نوشته: [ -> ]میتونید از فیلترهای سفارشی استفاده کنید ولی ترجیحاً بهتره این کار رو با RBAC انجام بدین.
قبلنا بیشتر توضیح میدادید :)
ما یه شبکه اجتماعی داریم و میخاییم کاری کنیم که هر نفر فقط بتونه اطلاعات خودش رو ببینه و ویرایش کنه (و حذف البته ) و حالا میخوام قبل هر کدوم از این کارا بررسی بشه که ایا این کامنت یا پست یا هرچی متعلق به این کاربر هست یا نه و میخوام این کار به صورت اتوماتیک انجام بشه و طوری نباشه همه جا بشینم و با یه if برسی کنم
تنها راه منطقیی که به نظرم میرسه یه فلیتر کلیه که واسه ی کلیه ی CURD ها استفاده بشه
به نظرم yii واسه این مشکل هم راه حلی داره
برای چیزی که شما نیاز دارید فکر کنم تغییر در دو تابع actionIndex و findModel در کنترل مربوطه کافی باشه. بصورت زیر:
public function actionIndex()
{
$dataProvider = new ActiveDataProvider([
'query' => Post::find()->where('user_id=:user_id', [
':user_id' => Yii::$app->user->id,
]),
]);
return $this->render('index', [
'dataProvider' => $dataProvider,
]);
}
protected function findModel($id)
{
if (($model = Post::findOne(['id' => $id, 'user_id' => Yii::$app->user->id])) !== null) {
return $model;
}
else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}