【Laravel5】illuminate/htmlでFormを作る

【Laravel5】illuminate/htmlでFormを作る

Illuminated Bridge Over River, at Night

【Laravel5】illuminate/htmlでFormを作る

Forms – Laravel5 Fundamentalsを元に付加情報をつけて記載しています。

GitHubにサンプルプロジェクトがあります。

ryo-ogata/learning-laravel-5

登録フォームを実装する

Laravel5のカスタムパッケージであるilluminate/htmlをプロジェクトにインポートし、実際にそれをつかって登録フォームを実装します。

  1. Routing/Controllerを追加する。
    • app/Http/routes.php

      前回追加したshowメソッドの手前に、今回のcreateメソッドを追加します。

      逆にしてしまうと、/articles/createのURLに対して/articles/{id}のほうが先にヒットしてしまいます。

    • app/Http/Controllers/ArticlesController.php

  2. illuminate/htmlをプロジェクトに追加する。
    • まずはインストールコマンドでvendorに追加する。

      composer require illuminate/html

    • Providerを登録する。

      「Provider」については後半の記事で紹介します。今はそのまま追加していきます。

      • config/app.php

    • aliasesを登録する。
      • config/app.php

  3. Viewを追加する。

    前回、Bootstrapを導入したので、お作法にあわせて以下のようにHTMLを書きます。

    @extends、@section、さらに{}で囲まれた部分はBladeテンプレートエンジンの構文です。

    Form::labelForm::textがどのように変換されるか、あとで実際に確認してみてください。

    • resources/views/articles/create.blade.php

  4. 確認する。

    http://127.0.0.1:8000/articles/create

登録のAPIを実装する

  1. Routingを追加する。

    • app/Http/routes.php

      はじめてのPOSTリクエストのためのメソッドです。

  2. Controllerを実装する。

  • use Illuminate\Http\Request;use Request;と省略しています。

  • storeメソッドを追加しました。

    • $input['published_at'] = Carbon::now();で現在日をセットしています。Carbonはuse宣言してあります。

    • Article::create($input);によって新しい記事を追加しています。このとき$inputの値のうち、モデルに反映される値はArticleモデルの$fillableに宣言している値です。

    • return redirect('articles');によって、記事一覧画面へリダイレクトしています。

  1. 確認する。

    http://127.0.0.1:8000/articles/create

    【Laravel5】illuminate/htmlでFormを作る
    【Laravel5】illuminate/htmlでFormを作る

    入力してからボタンを押すと、記事を追加してから、記事一覧画面へリダイレクトします。

    【Laravel5】illuminate/htmlでFormを作る
    【Laravel5】illuminate/htmlでFormを作る

逆順ソートを簡単に実装する

<

p>現在の記事一覧画面の記事はソート順が設定されていません。

latest()メソッドを使うように修正します。

latest()メソッドの中身を見てみます。

  • vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php

つまり、記事がpublished_atの降順でソートされます。

http://127.0.0.1:8000/articles

【Laravel5】illuminate/htmlでFormを作る
【Laravel5】illuminate/htmlでFormを作る

 まとめ

登録画面を追加して、記事を降順で表示させることができました。

Illuminate/Htmlを使うとPHPのメソッドを呼び出してHTMLページを構成できます。余談ですが、Bladeテンプレートに、{!! phpinfo(); !!}とか書いてみると、ちょっとイメージがつかめるかと思います。

次回は、今回登場したものを、さらに便利に利用できるような仕組みを紹介したいと思います。

Comments are closed, but trackbacks and pingbacks are open.