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

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

シナリオ

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


Routing

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

// app/Http/routes.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 AppHttpControllers;

use AppHttpRequests;
use AppHttpControllersController;

use IlluminateHttpRequest;

class PagesController extends Controller {
    public function index()
    {
        //
    }

    public function create()
    {
        //
    }
    public function store()
    {
        //
    }
    public function show($id)
    {
        //
    }

    public function edit($id)
    {
        //
    }

    public function update($id)
    {
        //
    }

    public function destroy($id)
    {
        //
    }
}

何やらデフォルトでメソッドがたくさん作成されています。
php artisan make:contoller コマンドはデフォルトで、一般的なデータ操作に必要なメソッドを自動生成する仕組みになっています。
PagesControllerとしてはこれらのメソッドは不要な為、全て削除します。

また、php artisan make:contoller コマンドに plain オプションを付ける事で、デフォルトメソッド無しで、コントローラを作成することもできます。

php artisan make:controller --plain PagesController
<?php // app/Http/Controllers/PagesController.php
namespace AppHttpControllers;

use AppHttpRequests;
use AppHttpControllersController;

use IlluminateHttpRequest;

class PagesController extends Controller {
    //
}

ちなみに、artisanで実行出来るコマンドのオプションは以下のように確認することができます。

php artisan help コマンド
php artisan help make: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 アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中