Laravel学習帳

Laravel5.2の学習帳です。開発環境はXAMPP for Windows 5.6.19 / 本番環境はさくらサーバー(スタンダード)

基礎知識

コントローラについて

2017/05/08

mainvisual

MVCモデルにおけるコントローラについて学びます。

 

コントローラとは

コントローラはartisanコマンドを使って作成できます。

php artisan make:controller PagesController

上記のコマンドを実行すると app/Http/Controllers/PagesController.php ファイルが作成されます。

img01

 

コントローラの書き方

コントローラからビューを表示させる

ビュー関数を使います。

引数には表示させたいページを指定します。

class PagesController extends Controller {
  public function index() {
    return view('welcome');
  }
}

上記の記述で

resouces/views/welcome.blade.php

のファイルが表示されます。

 

コントローラからビューに変数を渡す方法

メソッドチェーンでwith関数を使います。

class PagesController extends Controller {
  public function index($name) {
    $message = "こんにちわ".$name."さん";
    return view('welcome')->with('message','$message');
  }
}

 
また連想配列を使って渡すこともできます。

class PagesController extends Controller {
  public function index($name) {
    $message = "こんにちわ".$name."さん";
    return view('welcome',['message' => $message]);
  }
}

上記の記述でwelcome.blade.phpに変数messageを渡します。

 

RESTfulコントローラ

RESTとは

RESTとはHTTPメソッドとURIに応じてWEBの処理が決まることです。

メソッド URI 処理内容
GET /articles 表示
POST /articles 新規作成
PUT/PATCH /articles/{id} 更新
DELETE /articles/{id} 削除

RESTの概念に基づいて設計されたものをRESTfulと言います。

 

RESTfulコントローラの作成

Laravel5.2でRESTfulコントローラを作成する場合はオプションにresourceを指定します。

php artisan make:controller CrudController --resource

これで作成されたコントローラは以下になります。

<?php
class CrudController extends Controller {

  public function index()
  {
  // 一覧表示の処理を記述します。
  }

  public function create()
  {
  // 新規作成の処理を記述します。
  }

  public function store()
  {
  // 新規保存の処理を記述します。
  }

  public function show($id)
  {
  // 詳細表示の処理を記述します。
  }

  public function edit($id)
  {
  // 編集処理を記述します。
  }

  public function update($id)
  {
  // 更新処理を記述します。
  }

  public function destroy($id)
  {
  // 削除処理を記述します。
  }
}

ちなみにこれに対応したルーティングの記述は1行でいけます。

Route::resource('crud', 'CrudController.php');

resourceメソッドを使わない形だと以下のような感じになります。

Route::get('/crud','CrudController@index');
Route::get('/crud/create','CrudController@create');
Route::post('/crud','CrudController@store');
Route::get('/crud/{id}','CrudController@show');
Route::get('/crud/{id}/edit','CrudController@edit');
Route::patch('/crud/{id}','CrudController@update');
Route::delete('/crud/{id}','CrudController@destroy');

コントローラについては以上です。

 

-基礎知識