前回までで新規記事を投稿できるようになったので、今回からタグ関連の機能を編集していきます。
Controller TagsController.php にisAuthorized methodを追加
まず最初に、下記のisAuthorized method を Delete method の下に追加します。ログインしているユーザーであれば記事にタグを「新規追加」・「編集」・「削除」できるよう設定します。
public function isAuthorized($user) { $action = $this->request->getParam('action'); if (in_array($action, ['add', 'edit', 'delete'])) { return true; } }
isAuthorized methodを追加後は、bakeで作成したコードで既に「新規追加」・「詳細」・「編集」・「削除」ができるようになっているのでタグ機能の動作が確認できればここまでの工程は完了です。
Controller ArticlesController.php の View method を編集
上記編集で、投稿記事にタグが関連付けられるようになったので、次にRelated TagesとしてArticlesの詳細画面でタグを表示できるように設定します。
ArticlesController.php の View method を下記の様に編集します。
public function view($slug = null) { $article = $this->Articles->findBySlug($slug)->contain(['Tags'])->firstOrFail(); $this->set('article', $article); }
findBySlug($slug)の際にcontainで関連しているタグの情報も一緒に取り出せるように設定をしています。
上記変更後に、投稿記事の詳細画面へ遷移すると投稿記事に関連付けたタグが表示されるようになります。