2018/10/12
今回はMVCモデルの要になるコントローラの作成です。
RESTfulコントローラを作成します。
やりたいこと
RESTfulコントローラの作成。
予備知識
Laravel5.2におけるコントローラの知識は必要です。
Laravelのヘルパー関数であるview()やwith()を使います。
コントローラにデータベースを操作する記述を書くのでEloquentについての知識が必要です。
あわせてルーティングも設定します。ルーティングの知識も必要になります。
進め方
【1】RESTfulコントローラのひな形の作成
【2】RESTfulコントローラの編集
2-1. 一覧表示
2-2. 新規作成
2-3. 新規保存
2-4. 詳細表示
2-5. 編集
2-6. 更新
2-7. 削除
【3】ルーティングの設定
【1】RESTfulコントローラのひな形の作成
artisanコマンドでRESTfulコントローラのひな形を作成します。
php artisan make:controller CrudController --resource
コマンドを入力するとapp/Http/Controllers/
にCrudController.phpが自動生成されます。
ファイルを開いて編集していきます。
まずは文頭でCrudモデルのパスを通しておきます。
use App/Crud;
以下、一覧・新規・保存・詳細・編集・更新・削除とメソッドを作成していきます。
【2】RESTfulコントローラの編集
2-1. 一覧表示
/*------------------------------------------------------- * 一覧表示 --------------------------------------------------------*/ public function index() { $data = Crud::latest('created_at')->paginate(10); return view('crud.index')->with('message','ユーザーリスト')->with('data',$data); }
2-2. 新規作成
public function create() { return view('crud.create')->with('message','登録するユーザーを入力してください。'); }
2-3. 新規保存
入力項目の仕様にあわせてstoreメソッドを編集します。
public function store(CrudRequest $request) // ※1 { $crud = new Crud(); $crud->name = $request->name; $crud->mail = $request->mail; $crud->gender = $request->gender; $crud->age = $request->age; $crud->pref = $request->pref; $crud->birthday = $request->birthday; $crud->tel = $request->tel; $crud->save(); # View表示 $res = $request->input('name')."さんを追加しました。"; $data = Crud::latest('created_at')->paginate(10); return redirect('/crud/')->with('message',$res)->with('data',$data)->with('status','新規保存の処理完了!'); }
※1 storeメソッドの引数にCrudRequestを指定します。
CrudRequestクラスでバリデーションをかけるためです。
CrudRequestクラスはこのあと作成します。
2-4. 詳細表示
詳細ページでは全カラムを表示させます。
public function show($id) { $user = Crud::findOrFail($id); return view('crud.show')->with('user', $user); }
2-5. 編集
public function edit($id) { $data = Crud::findOrFail($id); return view('crud.edit')->with('message','編集フォーム')->with('data',$data); }
2-6. 更新
public function update(CrudRequest $request, $id) //※1 { $crud = Crud::findOrFail($id); $crud->name = $request->name; $crud->mail = $request->mail; $crud->gender = $request->gender; $crud->age = $request->age; $crud->pref = $request->pref; $crud->birthday = $request->birthday; $crud->tel = $request->tel; $crud->save(); # View表示 $res = $request->input('name')."さんを更新しました。"; $data = Crud::latest('created_at')->paginate(10); return redirect('/crud/')->with('message',$res)->with('data',$data)->with('status','更新処理完了!'); }
※1 updateメソッドの引数にCrudRequestを指定します。
CrudRequestクラスでバリデーションをかけるためです。
CrudRequestクラスはこのあと作成します。
2-7. 削除
public function destroy($id) { $crud = Crud::findOrFail($id); $crud->delete(); # 削除処理 $data = Crud::latest('created_at')->get(); return redirect('/crud/')->with('status', '削除処理完了!')->with('data',$data); }
【3】ルーティングの設定
RESTフルコントローラーに対応するルーティングを記述します。
Route::resource('crud','CrudController');
RESTfulコントローラの作成は以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。