3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelのコントローラーについて理解する

Last updated at Posted at 2021-07-18

#環境
PHP 7.3.24
Laravel 6.20.30
MAMP

#Controller(コントローラ)とは
コントローラとはlaravelのMVCモデルのCに当たるもので、モデルとビューとの橋渡しをする役割があります。ルーティング処理によって複数あるコントローラのうちどのコントローラで処理をするかが割り振られます。

コントローラの主な役割
・ルーティングで受け取った情報をモデルやビューで処理するように指示すること
・モデルで受け取った情報をビューファイルで読み取れるように処理すること

#コントローラの作成手順
##1. コントローラの作成
コントローラの作成はphp artisanコマンドを使います。
ちなみにコントローラ名はアッパーキャメルケース(頭文字が大文字で複合語の先頭も大文字)にするのが一般的です。また、分かりやすいようにControllerという言葉もつけるのが通例です。

$ php artisan make:controller TestController

コマンドを実行するとapp/Http/ControllersTestController.phpが作成されていることが確認できるので、ファイルの中身を確認してみます。

TestController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
  // 
}

初期表示でTestControllerクラスを作成してくれているので、次は中身を記述していきます。

今回はindexメソッドを作成して「これはコントローラのテストです。」という文字をビューで表示させる指示を書くことにします。

TestController.php
<?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には以下のように記述しました。

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メソッドの使い方

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?