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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。