前回はルーティングからビューを表示しました。
今回はコントローラーからビューを表示します。
今回も実践から理解を深めていきましょう。
目次
前提
ファイル構成
今回使用するファイルの構成は以下の通りです。
ファイル名 | 説明 |
---|---|
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
最後に
次回は、コントローラーからビューへ変数を渡し方を説明します。