cosian.com

Laravel入門(2)

2019-07-26

system

■シングルアクションコントローラ

コントローラには通常複数のアクションを書くことが多い。一覧表示、詳細表示、登録・編集など。しかし、1つのアクションしか用意しない設計ということもある。
そんな場合はシングルアクションコントローラとしてクラスを用意することができる。

前回のHelloControllerのindexアクションをシングルアクションコントローラのクラス記述に変更。

  1. class HelloController extends Controller
  2. {
  3. public function __invoke() {
  4. return '

    これが表示されたら成功

    ';
  5. }
  6. }


次にweb.phpでルート情報を編集。

Route::get('/', 'HelloController');


前回との違いはコントローラ名の後ろのアクション名を省略することができる。

■ビューの利用

ビューとは先にMVCアーキテクチャを説明した際に出てきたとおり、画面表示を担当する部分になる。
Laravelでは独自作成したBladeというテンプレートエンジンが利用できる。
もちろんテンプレートエンジンを利用せずに普通にPHPで書くということもできる。
ビューは
resources/views
フォルダ内に格納される。

ビューの動きを見てみる。

viewsフォルダ内にhelloフォルダを作り、その中に以下のようなindex.phpを作成する。

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Hello/Index</title>
  5. </head>
  6. <body>
  7. <h1>Index</h1>
  8. <p>これが表示されればOK!</p>
  9. </body>
  10. </html>


ルーティングを設定するため、web.phpに以下を追加。

  1. Route::get('hello', function() {
  2. return view('hello.index');
  3. });


ルーティング設定で第2引数にクロージャーを書き、viewというメソッドでテンプレートを読み込んでいます。
viewメソッドは第1引数にフォルダ名、第2引数にファイル名を指定します。
これで
http://localhost:8000/hello
にアクセスするとindex.phpで記述した内容が表示される。


■コントローラとビューの連携
ルーティング→ビュー
だと、PHPの必要性も、Laravelというフレームワークの必要性もありません。
コントローラでシステム制御し表示させ、その内容をビューで表示してこそのフレームワークなので、
ルーティング→コントローラ→ビュー
の表示方法を説明する。

HelloControllerのクラスの中身を変更。

  1. class HelloController extends Controller
  2. {
  3. public function __invoke() {
  4. return view('hello.index');
  5. }
  6. }


先ほどルーティング設定時にクロージャーで書いた方法と同じ。

ルーティングは既に設定済みなので、これで
http://localhost:8000
にアクセスするとhelloフォルダのindex.phpの内容が表示される。


今回はここまで。

コメントを書く
コメント
お名前