皆さん、こんにちは。WebAPIについて学習中のt-odaです。

さて前回はLaravelのインストールや環境設定などの準備をしました。 今回からは実際にルーティングとEloquentモデルとビューについてを学んでいきます。 そして今回の目標は正しくルーティングをすること、ビューを表示することです。

さっそくEloquentモデルから見ていきましょう。

Eloquentモデル

まずEloquentモデルですがファイルは前回作成済みですね。app/Task.phpを見ましょう。 名前空間やクラスが定義されただけの中身が空のクラスです。ぶっちゃけこれだけでも動きます。なぜならModelクラスを継承しているからです。

またテーブル名は複数形が基本です。例えば、ブログ記事に関するテーブルならarticles、タスクに関するテーブルならtasksのように。Eloquentモデルはそれを想定しているので、テーブル名tasksに対応するクラス名はTaskとなり、テーブル名を明示しなくてもちゃんとそのテーブルを参照してくれます。articlesならArticleです。 もし、複数形ではなかったり明示する必要がある場合は次のように書きましょう。親クラスのプロパティである$tableをオーバーライド(上書き)しています。

ルーティング

次にルーティングですが、基本的にURIとクロージャの組み合わせになります。例えば、「/」というURIにアクセスした時にHello Worldを表示する処理は次のように書きます。

そしてルーティングはapp/Http/routes.phpに記述します。

このファイルを開くと、ひとつだけルートが書かれていますね。これは、「/」にGETでアクセスしたらwelcome.blade.phpというビューを表示するという処理になります。

viewメソッドはLaravelが持っているヘルパー関数です。よく使うヘルパー関数は次の2つのファイルです。どんな関数があるのが確認しておくといいかもしれません。(処理を理解するのではなく、関数名をさらっと見る程度です。)

vendor/laravel/framework/src/illuminate/Foundation/helpers.php 
vendor/laravel/framework/src/illuminate/Support/helpers.php

ルートは基本的にRouteクラスのファサードを使って定義していきます。Laravelのファサードはstaticなメソッドにアクセスできるようになってます。Routeクラスのget()を利用しているように見えますが、実際はIlluminate\Routing\Router のインスタンスの get() が実行されています。つまりクラスのエイリアスですね。またメソッドはHTTPメソッドに対応しており引数をとります。get()ならgetでアクセスした時、post()ならpostでアクセスした時に動作するということです。

  • 第1引数:URI
  • 第2引数:クロージャ

クロージャは無名関数とも言い、名前を指定しなくても関数の処理を書くことができるものです。

HTTPメソッド名と主な使われ方が以下になります。ちなみに、PUTとPATCHとDELETEはHTML5から使用できます。

  • GET:データを取得
  • POST:データを追加
  • PUT:データの全部を更新
  • PATCH:データの一部を更新
  • DELETE:データを削除

さて、実際にルートを定義してみましょう。最初から書かれているルートは消してください。 今回のルートは次の3つです。ただし作成と削除の処理はあとで記述します。

  • タスク一覧を表示するルート(GET)
  • 新規タスクを作成するルート(POST)
  • 既存のタスクを削除するルート(DELETE)

これを記述すると次のようになります。

簡単ですね!PUTやPATCHを使いたい時も同様の書き方です。

ビュー

最後に、ビューを作って表示させてみましょう。

まず、ビューはresources/views/ディレクトリに置きます。またファイル名はファイル名.blade.phpで指定します。拡張子を.blade.phpとすることで、テンプレートエンジンであるBladeが使えるようになります。 先ほど使ったview()というヘルパー関数は引数をとり指定のビューを表示させるというものでしたね。 第3引数まで指定できますがほぼ使うことがないので深く考える必要はありません。

  • 第1引数:ビューファイルのパス
  • 第2引数:ビューで使うデータ(連想配列)

簡単な使い方を紹介します。

これで、resources/views/home.blae.phpで変数errorが使えるようになります。 データの渡し方は他にもあります。

  • with():チェーメソッドで繋ぎます。第1引数にビューで使う変数名、第2引数に値です。
  • compact():viewメソッドの第2引数で使います。指定の変数をそのままビューで使いたい時はこちらのほうが便利です。

それぞれ以下のような使い方です。

とても簡単ですね。これを踏まえて、ビューを表示します。

app/Http/routes.phpを次のように編集します。

次にtasks.blade.phpです。ビューで変数を使う時は{{ }}を使います。

最後に、ビルトインサーバーを立ち上げるために次のコマンドを実行してから、ブラウザでlocalhost:8000/tasksにアクセスします。

$ php artisan serve

エラーなくちゃんと表示されましたか?画面上に「タスクリストだよー!」の文字が表示されていれば成功です!これが基本で、やっていけば体が覚えるので心配はいりません!

それでは、このへんで。ありがとうございました。