前のパートに戻る 完了して次のパートへ  

  1-3 コントローラーの作成

前パートでは、URLと処理内容のひも付けを行いました。

この処理内容をもう一段詳しく定義するのがコントローラーになります。

(なお、処理の内容によっては、さらに別の適したクラスへ処理を引き渡すといったことを行うのもコントローラーの役割です)

Laravelでは、コントローラーをapp/Http/Controllersディレクトリに作成します。

本パートではコントローラーを新規に作り、さらに記事一覧のビュー(画面の見た目)を呼び出すindexアクションメソッドを定義します。

なお、本来は記事一覧の情報をデータベースの記事テーブルから取得してビューに渡す必要がありますが、本パートの段階ではダミーの固定データを渡すようにします。

1. コマンドでのコントローラーの新規作成


Laravelでは、コマンドでコントローラーのひな形を作成することができます。

laradockディレクトリで、以下のコマンドを入力してください。

$ docker-compose exec workspace php artisan make:controller ArticleController

以上により、app/Http/ControllersディレクトリにArticleController.phpが作成されます。

なお、今回実行したコマンドの先頭に付いているdocker-compose exec workspaceの意味は、

  • docker-composeコマンドで起動中のworkspaceという名前のDockerコンテナ(仮想環境)の中で、続くコマンド(php artisan...)を実行してください

といったものになります。

Laravelでコントローラーのひな形を作成するためのコマンドそのものはphp artisan make:controller コントローラー名となります。

今回も含め、今後登場するコマンドの先頭にdocker-compose exec...が付いているのは、本教材がDocker Composeという仕組みを使って開発環境を構築しているためなので、その点についてご注意ください。

2. コントローラーの編集


次に、laravel/app/Http/Controllers/ArticleController.phpを以下の内容に編集してください。

.
└──laravel
    └── app
        └── Http
            └── Controllers
                └── ArticleController.php

前パートでは、以下のようにルーティングを定義しました。

この[email protected]indexの部分が、ArticleController.phpindexアクションメソッドに対応します。

ダミーデータ

本来、indexアクションメソッドでは記事情報をデータベースのarticlesテーブル(記事テーブル)から読み込む必要があります。

ただし、まだarticlesテーブルを作成していないので、この段階ではarticlesテーブルの内容を模したデータを変数$articlesに代入しています。

(object)は、型キャストと呼ばれるものです。

ここでは、配列の手前に(object)と記述することで、配列がオブジェクト型に変換されています。

データベースのテーブルから読み込んだデータは、Laravelではオブジェクト型として扱われるので、このような型変換を行なっています。

本パートの段階では、PHPには型キャストという仕組みがあるということだけ頭の片隅に入れておいてください。

viewメソッド

indexアクションメソッドでは、以下の通り、viewメソッドの結果をアクセス元に返しています。

viewメソッドの第一引数には、ビューファイル名を渡します。

'articles.index'とすることで、resources/views/articlesディレクトリにある、indexという名前のビューファイルが表示されます。

(現時点ではresources/viewsディレクトリには、articlesディレクトリもindexというビューファイルも作成していないので、次のパートで作成します)

viewメソッドの第二引数には、ビューファイルに渡す変数の名称と、その変数の値を連想配列形式で指定します。

ここで、'articles'というキーを定義することで、ビューファイル側で$articlesという変数が使用できるようになります。

ビューファイル側で使う$articles変数の中身の値は、このindexアクションメソッドで定義したダミーデータ$articlesの値となります。

以上で、コントローラーの作成は完了です。

次はビューファイルを作成します。


viewメソッドの補足

本教材では、ビューに渡す変数を連想配列形式でviewメソッドの第二引数に渡しています。

Laravelでは、それ以外のコードの書き方でも変数をビューに渡すことができます。

ひとつめは、withメソッドを使う方法です。

viewメソッドにwithメソッドを繋げて、withメソッドの引数にビューファイルに渡す変数の名称と、その変数の値を連想配列形式を指定します。

もうひとつは、compact関数を使う方法です。

viewメソッドの第二引数に、compact関数を使った結果を渡しています。

compact関数を使うと、変数を連想配列形式で記述しなくて良いので、コードの量が減ってスッキリします。

これらのどれが正しいということはありませんが、本教材とは異なる書き方に遭遇しても戸惑わないよう、知識として覚えておいてもらえればと思います。

議論

2 質問

このコースの評価は?