コントローラーの生成
artisanで作成する
php artisan make:controller コントローラー名
1 2 |
$ php artisan make:controller SampleController Controller created successfully. |
コントローラーが配置される場所。
app/Http/Controllers
1 2 3 4 5 |
$ ls -Al app/Http/Controllers/ drwxrwxrwx. 2 vagrant vagrant 205 7月 1 20:44 Auth -rwxrwxrwx. 1 vagrant vagrant 361 7月 1 20:14 Controller.php -rw-rw-r--. 1 vagrant vagrant 123 7月 3 11:18 SampleController.php |
初期状態のコントローラーの内容。
1 2 3 4 5 6 7 8 9 10 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class コントローラー名 extends Controller { // } |
1 2 3 4 5 6 7 8 9 10 11 |
$ cat app/Http/Controllers/SampleController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class SampleController extends Controller { // } |
一般的な構成
ビューの基礎で使ったblade_sampleはルーティングファイルに変数などを記述して呼び出していた。しかし一般的には、ビューに必要な処理はコントローラーのメソッド=アクションを記述し、ルーティングではコントローラーのアクションを呼び出す、という方法が取られる。
そこで、このルーティングに書かれた処理をコントローラーに記述しなおし、ルーティングはコントローラーを呼び出すだけの構成に変更する。
コントローラーの記述
先に生成したSampleController
クラスのメソッドとして、sampleAction()
を定義し、その中に変数定義などの処理とビューの呼び出しを記述する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
?php namespace App\Http\Controllers; use Illuminate\Http\Request; class SampleController extends Controller { public function sampleAction() { $assoc_array = [ 'head' => 'bladeテンプレートでの変数展開', 'mechanism1' => '連想配列をview()の第2引数に渡す', 'mechanism2' => 'それを受け取ったビューでは、キーが変数名、値が変数の内容となる', 'escaped' => 'HTML特殊文字は<strike>自動的に</strike>エスケープされる', 'unescaped' => '{{...}}}ではなく{!!...!!}で囲むとエスケープ<strike>される</strike>されない', ]; return view('samples.blade_sample', $assoc_array); } } |
ルーティングでのアクションの定義
ルーティングの無名関数で処理を記述していた部分を、アクション呼び出しの書き方に変更する。
1 |
Route::get('sample_action', 'SampleController@sampleAction'); |
このように変更することで、ルーティングはURLとメソッドをアクションに結びつけることに専念し、シンプルになる。