初めてのLaravel 5.6 : (3) コントローラーの作成

前回はビューを作成しましたが、今回はコントローラの作成を詳しく見ていきます。

シナリオ

  • about ページを新設する。
  • 静的なページの表示を取りまとめる、PagesController を作成する。
  • about ページは、PagesController で表示する。

Routing

まずは、about ページのルーティング設定を行います。

// routes/web.php

// ...
Route::get('/', 'WelcomeController@index');
Route::get('contact', 'WelcomeController@contact');
Route::get('about', 'PagesController@about');    // 追加
// ...

Controller の作成

新規にコントローラを作成するには artisanコマンドを使用します。
artisan は Laravel に含まれているユーティリティーコマンドです。
どの様な事が出来るかは list オプションで確認できます。

php artisan list

それでは、コントローラを作成してみます。

php artisan make:controller PagesController 

app/Http/Controllers/PagesController.php ファイルが作成されました。
中身を確認してみます。

<?php // app/Http/Controllers/PagesController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PagesController extends Controller
{
    //
}

では、PagesControllerに aboutメソッドを追加し、viewの表示を行います。
今回は、resouces/viewsディレクトリの下に pagesディレクトリを作り、そこに about.blade.phpを格納します。

// ...
class PagesController extends Controller {
    public function about() {
        return view('pages.about');
    }
}

view 関数の引数に注目してください。ピリオドで区切って ‘pages.about’ としています。resources/views ディレクトリにサブディレクトリがある場合、’サブディレクトリ.ビュー’ とピリオドで区切って指定します。


View の作成

resouces/views ディレクトリ以下に pages ディレクトリを作成し、テキストエディタで about.blade.php を作成します。

blog
└── resources
     └── views
         └── pages
              └── about.blade.php
<!-- about.blade.php -->

<!DOCTYPE HTML>
<html>
<head>
    <title>About</title>
</head>
<body>
    <h1>About Me</h1>
</body>
</html>

動作確認

ブラウザで http://localhost:8000/about へアクセスします。
ページに “About Me” が表示されれば成功です。
新しく作成した PagesController 経由で View を表示することができました。


演習

前回に作成した contact ビューを PagesController から表示するよう修正してください。


まとめ

以下のことが出来るようになりました。

  • Controller の作成
  • artisan コマンドの使用
  • View ファイルのサブディレクトリへの格納
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中