| layout | title |
|---|---|
default |
コントローラーからビューを表示してみよう |
-
前章でルーティングの設定が完了しました。
-
本章では、作成したルーティングに対してビューを表示してみましょう。
-
本章では以下を行います。
-
コントローラーの作成とビューのレンダリング方法を説明します。
-
ビュー ( Twig ) の作成と役割の説明を行います。
-
- まずは以下フォルダを作成してください。
- /src/Eccube/Controller/Tutorial
- 関連するコントローラーは一つのフォルダにまとめます。
- 作成方法はそれぞれの環境で異なると思いますので、割愛いたします。
- 以下の様にディレクトリを作成してください。
-
次にCrudController.phpを作成します。
-
TopControllerをコピー、リネームします。
-
CrudController.php( 中身はTopController.phpのコピー )
- 下記の様に修正を行います。
-
一度確認のためにブラウザにアクセスしてみましょう。
-
ブラウザのURLに「http://[ドメイン + インストールディレクトリ]/tutorial/crud」を入力してください。
-
次はエラーではなく、以下が表示されているはずです。
-
- ルーティングの設定とコントローラーには問題がなさそうです。
-
以下フォルダにTwigファイルを追加します。
-
/src/Eccube/Resource/template/default/Tutorial
- 関係するコントローラーのビューをフォルダ毎にまとめます。
- 作成方法はそれぞれの環境で異なるため、割愛します。
- 以下の様にディレクトリを作成してください。
-
-
次に、crud_top.twigを作成します。
-
index.twigをコピー、リネームします。
-
crud_top.twig( 中身はindex.twigのコピー )
- 下記の様に修正を行います。
- コントローラーで「echo」していた箇所を以下の内容に修正します。
-
コントローラーとメソッドについて簡単な説明を行います。
- 引数 : $app
- $appにはEC-CUBEで用いるあらゆるクラスが格納されています。
- 正しくはApplication.php/ServiceProviderで設定した内容が、実行時にインスタンス化されて利用できる構造になっています。
- ここでは詳細に解説は行いませんが、「$app」からいろいろな機能を呼び出してアプリケーションを構築していくとだけ覚えてください。
- 名前空間 : use Eccube\Application;
- 1.で説明した「$app」を利用するためには、クラスのスコープ外に必ず、名前空間を指定しなければなりません。
- 簡単にいうと、コントローラーに利用するクラスの保管場所を教えてあげるという事です。
- 名前空間で指定するパスは、使用するクラスによって変わりますが、「/src/Eccube」以下にあるクラスを利用する場合は、「Eccube」からの相対パスを指定してください。(先頭に「\」は必要ありません)
- 名前空間 : use Eccube\Controller\AbstractControler;
- コントローラーの親クラスを上記と同じ理由により設定いたします。
- $app->render([表示したいTwigのパス])
- 「render」にTwigのパスを引数として渡すと、対象のTwigが解析され、htmlに変換されます。
- 通常はコントローラーのメソッドの戻り値として、renderの戻り値をそのまま「return」すると、変換されたhtmlが返却され、画面が表示されます。
- 「引数」として指定するパスは「/src/Eccube/Resource/template/」がルートパスとして設定されています。
- ルートパスはApplication.phpの初期化が終わった時点で設定されます。
- 管理者側のコントローラーであれば、上記フォルダの「/admin/」が対象、ユーザー画面であれば「/default/」がルートフォルダになります。
- 引数 : $app
-
最後に確認のためにブラウザにアクセスしてみましょう。
-
ブラウザのURLに「http://[ドメイン + インストールディレクトリ]/tutorial/crud」を入力してください。
-
Twigに記載した内容が表示されます。
- ヘッダーやフッターが表示されていませんが、現状はこれで正しい状態です。
- ヘッダーやフッターの表示設定は後で行います。
-
- 内容量も増えてきたので、章の内容をまとめておきます。
- 本章で以下を行いました。
- 既存コントローラーをコピーして新しいコントローラーを作成しました。
- 既存Twigをコピーして新しいTwigを作成しました。
- コントローラー・Twigともに、関連するフォルダにまとめる事を説明しました。
- $appは各コントローラーのメソッドの引数として渡され、いろいろな機能が格納されている事を説明しました。
- renderでTwigをhtmlに変換しメソッドの戻り値とする事で画面が描画される事を説明しました。


