RESTfulコントローラの作成

2018/10/12

step03

今回はMVCモデルの要になるコントローラの作成です。

RESTfulコントローラを作成します。

 

やりたいこと

RESTfulコントローラの作成。

 

予備知識

Laravel5.2におけるコントローラの知識は必要です。

コントローラについて

 
Laravelのヘルパー関数であるview()やwith()を使います。

ヘルパー関数について

 
コントローラにデータベースを操作する記述を書くのでEloquentについての知識が必要です。

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

>> Twitter をフォローする

 

-チュートリアル