【Laravel】コントローラー 基本

前回はルーティングからビューを表示しました。

今回はコントローラーからビューを表示します。
今回も実践から理解を深めていきましょう。

前提

ファイル構成

今回使用するファイルの構成は以下の通りです。

ファイル名説明
app/Http/Controllers/BasicController.phpコントローラー
resources/views/home.blade.phpビュー
routes/web.phpルーティング

ビュー

今回はビューについての説明はないので、内容は任意で構いません。
例として、以下のビューを作成して下さい。

<h1>メインタイトル</h1>

ルーティング

ルーティングの準備

説明は後でしますが、以下の内容をルーティングファイル(web.php)へ記載しましょう。

Route::get('/controller', 'BasicController@action');

ルーティングの説明

今回はコントローラーを使用します。
その為、ルーティング内で使用したいコントローラーを指定する必要があります。
コントローラーの指定方法は コントローラー名(クラス名)と、@以降に実行したいメソッド名 を指定します。
今回の例は http://localhost/controller でアクセスすると、 “BasicControllerクラス” の “action” というメソッドが実行されること を意味しています。

コントローラー

コントローラーの準備

説明は後でしますが、 app/Http/Controllers/BasicController.php を作成しましょう。
内容は以下の通りです。

<?php

namespace App\Http\Controllers;

// 継承するコントローラークラスの読み込み
use App\Http\Controllers\Controller;

// コントローラークラスを継承する 
class BasicController extends Controller
{
    public function action() {
      return view('home');
    }
}

コントローラーの説明

画面表示

“今回はコントローラーからビューを表示します。”と宣言した通り、コントローラーの12行目がビューを表示する処理となります。
view関数 については、前回を確認して下さい。

名前空間

JAVAやPHP、フレームワークのようなプログラミング言語に関係なく、名前空間 という概念があります。
名前空間の概念については詳しく説明しませんが、簡単に言うと 自身がどのディレクトリに存在しています ということを意味しています。

今回は具体的な例から名前空間について理解していきましょう。
Laravelのデフォルト設定では、コントローラーの配置場所は、 app/Http/Controllers となっています。
Laravelでは、namespaceを使用して、コントローラー自身がどこにいるかを認識させる必要があります。これが名前空間です。
namespaceはPHPの機能になりますので、説明は省力させていただきます。
今回の例は、namespaceに App\Http\Controllers を指定しています。これは、BasicController.php が app/Http/Controllers にいることを意味します。(3行目)
“App” が “app” と認識することについてはここでは記載しません。別の機会に説明します。

<?php

namespace App\Http\Controllers;

// 継承するコントローラークラスの読み込み
use App\Http\Controllers\Controller;

// コントローラークラスを継承する 
class BasicController extends Controller
{
    public function action() {
      return view('home');
    }
}

コントローラークラスの継承

コントローラーを使用する際、Controllerクラス(App\Http\Controllers\Controller)を継承します。(9行目)
useを使い、Controllerクラスを読み込みます。(6行目)
useはPHPの機能に機能になりますので、説明は省力させていただきます。
また、継承についても説明は省力させていただきます。

<?php

namespace App\Http\Controllers;

// 継承するコントローラークラスの読み込み
use App\Http\Controllers\Controller;

// コントローラークラスを継承する 
class BasicController extends Controller
{
    public function action() {
      return view('home');
    }
}

コントローラーファイルの配置場所

コントローラーファイルを配置するディレクトリは、以下となります。

・コントローラーファイルの場所

app/Http/Controllers

確認

最後に、今までの説明と準備を踏まえ、コントローラーの動作を確認します。
ブラウザへ以下のURLを入力します。
うまくいけば、ビューの内容が見れるはずです。
URLのドメイン部分については適宜変更して下さい。

http://localhost/controller

最後に

次回は、コントローラーからビューへ変数を渡し方を説明します。

© DeNnie.Lab All Rights Reserved.