Laravel

【Laravel】掲示板を作成する(6)投稿・編集画面のカテゴリーをプルダウンメニュー化、特定カテゴリーの記事を検索して表示

Laravelによる掲示板の作成、第6回です。
今回は投稿・編集画面のカテゴリーを「プルダウン」にする方法と「特定カテゴリー投稿を表示」する方法についてポストします。

11.投稿・編集画面のカテゴリーをプルダウンメニュー化する

カテゴリーの入力にセレクトボックスを使えるようにします。
Categoriesテーブルのレコードを取得してセット出来るようにします。

モデルファイルに一覧取得用のメソッドを追加

編集ファイル:app\Category.php

検索時にpluckメソッドを使用することで、任意のキーのみを取得します。

Postsコントローラーを編集

編集ファイル:app\Http\Controllers\PostsController.php

createメソッド

↑ prependメソッドで、作成した配列の先頭に任意の項目(選択というテキスト)を先頭に追加しています。

editメソッド

投稿編集用画面にもカテゴリーのプルダウンを追加します。

ビューを編集

新規投稿フォーム

編集ファイル:resources\views\bbs\create.blade.php

投稿編集画面

編集ファイル:resources\views\bbs\edit.blade.php

編集画面キャプチャ

12.特定カテゴリーの記事を検索して表示する

一覧ページにカテゴリーを絞るためのボタンを設け、同一カテゴリのみの一覧を作成してみます。

ビューの編集

カテゴリーのリンクを追加

編集ファイル:resources\views\bbs\index.blade.php

indexビューに以下を追加。
ついでに、何件の投稿が表示されるのかをカウントするメッセージも付けてみます。

ページ送りを編集

カテゴリーのを指定しながらページ送りが出来るよう修正します。

Postsコントローラーを編集

リンクを作成するためのカテゴリマスターをindexメソッドでも取得するようにし、投稿を取得する部分にWHEREを使ってみます。

indexメソッドの引数にrequestを追加し、カテゴリーを指定している / してしないをif文で分けています。

編集ファイル:app\Http\Controllers\PostsController.php

一覧画面キャプチャ

全件表示

ひとまずここまでの結果をキャプチャします。

「WEBサービス」で絞った場合

↑ ページ送りで2ページ目に入っても、WEBサービスカテゴリーはきちんと保持されています。

ローカルスコープを使ってみる

このままでも良さそうですが、せっかくなのでLaravel(Eloquent)の機能である「ローカルスコープ」を使ってみます。

モデルファイルへ 『"scope" + アクション名』という形のメソッドを作成します。
引数($category_id)が空の場合は何もせず return させます。

Postモデルを編集

編集ファイル:app\Post.php

Postコントローラーを編集

編集ファイル:app\Http\Controllers\PostsController.php

ifの判定がなくなったのと、チェーンメソッド形式なので見やすくなった気がしますね。

-Laravel
-,