コントローラーの利用方法
それではコントローラーの利用方法をみていきましょう。
コントローラの作成
laravelで利用するControllerは、laravelのartisanコマンドを利用して作成することができます。
artisanコマンドは、laravelアプリケーションで必要な各種ファイル生成やデータベースの設定などを行なってくれるとても便利なコマンドです。
今回は、artisan の make:controller コマンドを利用してコントローラを作成します。
workspaceにログイン
まずlaradockの場合は
docker exec -it --user=laradock laradock_workspace_1 bash
を実行して、dockerのworkspaceにログインします。(ログイン済みであればそのままで構いません。)
vagrant(Homestead)の場合は
vagrant ssh
を利用してログインしてから、
cd /code/sample_app
上記のコマンドで、Laravelのプロジェクトディレクトリに移動します。
contollerの生成
続いて、現在 Laravelのプロジェクトディレクトリにいることが確認できたら
php artisan make:controller SampleController
としてみましょう。
上記の命令は
- phpプログラムである
- artisan というツールを利用して
- コントローラーを生成(make)してください
- コントローラー名はSampleControllerにしてください
という意味になります。
(なお、今後も php artisan から始まるコマンドを実行するときは仮想環境内のLaravelのプロジェクトディレクトリから実行するようにしましょう。)
controllerの確認
生成された SampleControllerは sample_app/app/Http/Controllers/ ディレクトリに生成されます。
SampleController.phpを開いてみましょう。
SampleController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SampleController extends Controller
{
//
}
namespace, use, classなど多くの方にとって見慣れない記述が続いています。 これらについては後ほど詳しく解説を行います。
まずは
- 現在はSampleControllerというものが生成されたが何も機能がない。
- SampleControllerの中にfunctionを定義することで、SampleControllerに様々な機能を持たせることができる。
ということだけ押さえておきましょう。
controllerにアクションを定義
それでは、web.phpで行なっていた処理をSampleControllerに移し変えていきます。 まずは、SampleControllerに追記を行い
SampleController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SampleController extends Controller
{
public function sample_action(){
$title = 'コントローラーを利用したサンプル';
$description = 'コントローラーを利用すると、ルーティングでphpの処理を書く必要がなくなります。';
return view('blade_sample',[
'title' => $title,
'description' => $description,
]);
}
}
と追記しておきましょう。
コントローラの利用
では、このsample_actionというメソッドをweb.phpの側で利用してみましょう。
web.php
(略)
Route::get('/sample_action', 'SampleController@sample_action');
と追記してあげましょう。 今まで無名関数を記載していた箇所に コントローラ名@メソッド名 の 文字列が書かれています。 これは、今まで利用していた無名関数の代わりに SampleController の sample_action というメソッドを利用する、という意味になります。
それでは
http://localhost/sample_action
(Docker Toolboxの場合は http://(dockerのipアドレス)/sample_action )
にアクセスしてみましょう。
上記のような画面が表示されれば完成です。
アクションとは
今回利用した sample_action メソッドのように、 コントローラーに定義されたメソッドで、ルーティングから利用されるものを 「アクション(action)」と呼びます。
エラーメッセージや解説など、様々なところで利用される用語なので 覚えておくと良いでしょう。