#環境
PHP 7.3.24
Laravel 6.20.30
MAMP
#Controller(コントローラ)とは
コントローラとはlaravelのMVCモデルのCに当たるもので、モデルとビューとの橋渡しをする役割があります。ルーティング処理によって複数あるコントローラのうちどのコントローラで処理をするかが割り振られます。
コントローラの主な役割
・ルーティングで受け取った情報をモデルやビューで処理するように指示すること
・モデルで受け取った情報をビューファイルで読み取れるように処理すること
#コントローラの作成手順
##1. コントローラの作成
コントローラの作成はphp artisan
コマンドを使います。
ちなみにコントローラ名はアッパーキャメルケース(頭文字が大文字で複合語の先頭も大文字)にするのが一般的です。また、分かりやすいようにController
という言葉もつけるのが通例です。
$ php artisan make:controller TestController
コマンドを実行するとapp/Http/Controllers
にTestController.php
が作成されていることが確認できるので、ファイルの中身を確認してみます。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
//
}
初期表示でTestController
クラスを作成してくれているので、次は中身を記述していきます。
今回はindexメソッドを作成して「これはコントローラのテストです。」という文字をビューで表示させる指示を書くことにします。
<?php
namespace App\Http\Controllers;
class TestController extends Controller
{
public function index()
{
$text = "これはコントローラのテストです。";
//top.blade.phpに$textという変数を渡す場合
return view('top', ['view_text' => $text]);
}
}
view(ビューファイル名,ビューに渡したいもの)
とすることでコントローラからビューへ指示を出すことができます。
view_text
がビューで使うときの変数名、$text
はコントローラ内で定義した変数になります。
コントローラの中では、ビューで使う変数名は変数の$記述しませんが、viewファイル内(bladeファイル)では変数の$をつけたものを使います。ややこしいので注意!
##2.ビューファイルの作成
先ほど設定したコントローラ内のメソッドをビュー側できちんと読み取れているか確認します。
(この記事はコントローラについて理解するものなので、ビューの記述方法などの説明は省きます)
show.blade.php
には以下のように記述しました。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
{{-- コントローラで渡した変数を使う --}}
<p>{{ $view_text }}</p>
</body>
</html>
##3. ルートの作成(ルーティング)
まずはリクエストURLをルートで受け取ったときに、どのコントローラで処理をするかの記述を行なっていきます。
ルートの記述はroutes
ディレクトリ内のweb.php
に以下のようにしていきます。
今回はURLが/test
の場合、TestControllerのindexメソッドを実行するルーティング処理を行なっていきます。
Route::get('/test','TestController@index');
##4.画面で確認
ルートで指定したURLに接続してみると以下のような表示になりました!
これはコントローラのテストです。
これでコントローラの処理をビューで表示することに成功しました。
今回はモデルを介した処理は行っていませんが追々やっていこうと思います!
#参考
コントローラについて
【Laravel入門】コントローラの作成とビュー表示
【Laravel】viewメソッドの使い方