[ 'class' => AccessControl::className(), 'rules' => [ [ 'allow' => true, 'roles' => [ '@' ], ], ], ], 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [ 'add-performer' => [ 'post' ], 'add-customer' => [ 'post' ], 'add-project' => [ 'post' ], 'add-vacancy' => [ 'post' ], 'remove-performer' => [ 'post' ], 'remove-customer' => [ 'post' ], 'remove-project' => [ 'post' ], 'remove-vacancy' => [ 'post' ], ], ], ]; } public function actionIndex() { return $this->render('bookmarks'); } public function actionAddPerformer() { $response = \Yii::$app->response; $response->format = Response::FORMAT_JSON; $model_id = \Yii::$app->request->post('id'); if(empty( $model_id )) { return [ 'error' => 'Ошибка добавления. Отсутствует id исполнителя' ]; } $user = User::findOne($model_id); if(empty( $user )) { return [ 'error' => 'Ошибка добавления. Исполнитель не найден.' ]; } $model = $user->className(); $user_id = \Yii::$app->user->getId(); $type = Bookmark::TYPE_PERFORMER; if(Bookmark::findOne([ 'model' => $model, 'model_id' => $model_id, 'user_id' => $user_id, 'type' => $type, ]) ) { return [ 'error' => 'Ошибка добавления. Исполнитель уже добавлен.' ]; } $bookmark = new Bookmark([ 'model' => $model, 'model_id' => $model_id, 'user_id' => $user_id, 'type' => $type, ]); if($bookmark->save()) { $result = $this->renderAjax('//site/forms-modal-fav', [ 'message' => 'Добавлено в закладки.', 'image' => $user->userInfo->image, 'name' => $user->name, ]); return [ 'result' => $result ]; } else { return [ 'error' => 'Ошибка добавления.' ]; } } public function actionAddCustomer($id) { } public function actionAddProject($id) { } public function actionAddVacancy($id) { } public function actionRemovePerformer() { $response = \Yii::$app->response; $response->format = Response::FORMAT_JSON; $model_id = \Yii::$app->request->post('id'); if(empty( $model_id )) { return [ 'error' => 'Ошибка удаления. Отсутствует id исполнителя' ]; } $user = User::findOne($model_id); if(empty( $user )) { return [ 'error' => 'Ошибка добавления. Исполнитель не найден.' ]; } $model = $user->className(); $user_id = \Yii::$app->user->getId(); $type = Bookmark::TYPE_PERFORMER; /** * @var Bookmark $bookmark */ $bookmark = Bookmark::findOne([ 'model' => $model, 'model_id' => $model_id, 'user_id' => $user_id, 'type' => $type, ]); if(!empty($bookmark)) { if($bookmark->delete()) { return ['message' => 'Закладка успешно удалена']; } else { return ['error' => 'Ошибка при удалении']; } } else { return ['error' => 'Закладка не найдена']; } } }