laravel 開発日記 第9回 ~ 基本CRUDアプリを作ってみる(中編) ~
前回にひきつづき、基本CRUDアプリを作ろうと思います。
(5)ルートサービスプロバイダ修正
参考
■初めてのLARAVEL 5 : (32) ROUTE MODEL BINDING https://laravel10.wordpress.com/2015/03/28/%E5%88%9D%E3%82%81%E3%81%A6%E3%81%AElaravel-5-32-route-model-binding/
ルートとモデルの結合(ROUTE MODEL BINDING)をするために /app/Providers/RouteServiceProvider.php を修正します。 必須ではないですが、やっておくとコントローラーの記述が楽になるので、修正します。
【作業ファイル:/app/Providers/RouteServiceProvider.php】 public function boot(Router $router) { parent::boot($router); $router->model('corporationDivisions', 'App\CorporationDivision'); // ←この一文追加 // }
(6)コントローラー データの処理の流れを管理。
【作業ファイル:/app/Http/Controllers/CorporationDivisionsController.php】 <?php namespace App\Http\Controllers; use App\Http\Requests; use App\Http\Controllers\Controller; use Illuminate\Http\Request; //以下、追加 use Session; use App\CorporationDivision; //モデル use App\Http\Requests\CorporationDivisionRequest; //リクエスト
まずは前段。
フラッシュメッセージ用のSession、モデル、リクエスト、 計3つのクラスをuseしてます。
■PHPの名前空間について簡単にまとめてみた
http://ucwd.jp/blog/736
useについては、上記サイトがわかりやすい。 ・・・と、いっても正直自分も、完全理解できてるか微妙。 ま、なんとなーく使えればよいかなー。
//認証 public function __construct() { $this->middleware('auth'); }
次、コンストラクタで、認証用ミドルウェアを呼び出してます。 さらにほかのミドルウェアを呼び出す場合は、 $this->middleware~ の行を続けて記入可能です。
public function index() { //データ取得 $corporationDivisions = CorporationDivision::all(); //データを渡しつつ、ビュー表示 return view('corporationDivisions.index', compact('corporationDivisions')); }
次はindex(一覧ページ)。 普通に、テーブルデータを取得して、ビューに渡してます。
public function create() { //ビュー表示 return view('corporationDivisions.createAndEdit'); }
新規登録画面表示。 createとeditのビューは、共用にするため、 createAndEditというビューを呼び出してます。
public function store(CorporationDivisionRequest $request) { //リクエストされたデータを新規格納 CorporationDivision::create( $request->all() ); //フラッシュメッセージの格納 Session::flash('flash_message','1件、追加しました。'); //一覧画面へリダイレクト return redirect('corporationDivisions'); }
次は、新規登録実行。 コメントに書いてある通り、リクエストされたデータを新規格納して、 フラッシュメッセージを追加、一覧へのリダイレクトをしています。
public function show(CorporationDivision $corporationDivision) { //データを渡しつつ、ビュー表示 return view('corporationDivisions.show',compact('corporationDivision')); }
詳細表示画面。 これもそのまんま、ビューを表示してるだけです。
public function edit(CorporationDivision $corporationDivision) { return view('corporationDivisions.createAndEdit', compact('corporationDivision')); }
編集画面。
新規登録と同じcreateAndEditビューを開くのですが、 編集なので、テーブルのデータをビューに渡してます。 このデータの有無により、 ビュー側で、編集画面か新規登録画面かを判断します。
■Laravel use same form for create and edit
http://stackoverflow.com/questions/22844022/laravel-use-same-form-for-create-and-edit
public function update(CorporationDivision $corporationDivision, CorporationDivisionRequest $request) { //データを更新する $corporationDivision->update($request->all()); //フラッシュメッセージの格納 Session::flash('flash_message','1件、編集しました。'); //一覧ページへリダイレクト return redirect('corporationDivisions'); }
ようやくラスト前、データの更新処理です。 新規登録と似たようなもので、 データの更新、フラッシュメッセージの格納、リダイレクトを行ってます。
public function destroy(CorporationDivision $corporationDivision) { //データベースからデータ消去 $corporationDivision->delete(); //フラッシュメッセージの格納 Session::flash('flash_message','1件、削除しました。'); //一覧ページへリダイレクト return redirect('corporationDivisions'); }
最後、削除時の処理です。 処理自体は、いたってシンプル。 消去して、フラッシュメッセージを書き込み、リダイレクトです。 一つ一つやってることは、大したことないのですが、 処理が多いですね・・・。 コントローラーの説明にかなりの行数とられたので、 ビューの説明は、次回に回します。
Discussion
New Comments
No comments yet. Be the first one!