私はググったり、チュートリアルやブログを読んだり、たくさん実験したりしました。そのため、コントローラー アクションへのロール ベースのアクセスを定義できます。すべて正常に動作します。聞きたいことは。ユーザー自身の投稿を表示、編集、および削除するルールを作成するにはどうすればよいですか?
デフォルトでは、すべての投稿が表示されます。ただし、データプロバイダーの基準を設定して、独自の投稿を表示できます。しかし、そのためにCRUDをどのように制御できますか?? 親切に私を助けてください。私のコードは以下です。
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'),
'expression' => 'Yii::app()->controller->HaveAccess()',
//'users' => array('@'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions' => array('admin', 'delete'),
'expression' => 'Yii::app()->controller->HaveAccess()',
),
array('deny', // deny all users
'users' => array('*'),
),
);
}
投稿表示の場合:
public function actionIndex() {
$dataProvider = new CActiveDataProvider('Advertisment');
if (!$this->IsAdmin()) {
$dataProvider = new CActiveDataProvider('Advertisment', array(
'criteria' => array(
'condition' => 'added_by='.$this->userId,
'order' => 'id DESC',
),
'pagination' => array(
'pageSize' => 20,
),
));
}
$this->render('index', array(
'dataProvider' => $dataProvider,
));
}