Help us understand the problem. What is going on with this article?

Laravel5.4でFORMファサードを利用する方法

More than 3 years have passed since last update.

FORMファサード

Formファサードのレシピ

Laravel5では標準でインストールされない

Laravel 4では標準で組み込まれていたのですが、Laravel 5 からは別パッケージになり、ユーザーコミュニティーによってメンテナンスされるようになりました。

初めてのLARAVEL 5.1 : (16) FORMの作成

必要なもの

composerが必要です。
多分Laravel使ってる方は既にインストールしているかと思うのでインストール方法は割愛します。
インストールしていない方は別途調べて下さい。

Composerをインストールしてみたとかよいかも

試した環境

  • CentOS7
  • Laravel5.4
  • Composer 1.4.2
  • PHP7.0

方法

LaravelCollective公式サイトに記載してありました。
公式は英語で書かれているので、補足も交えて日本語でここに手順を書いておこうと思います。

LaravelCollective公式

スクリーンショット_2017-06-23_15_44_22.png
上記のリンク先にあるコードをそのまま記載します。

パッケージをComposerからインストール

cd Laravelプロジェクト
composer require "laravelcollective/html":"^5.4.0"

composer require laravelcollective/html でもいいかと。

すると インストールが完了し、composer.jsonlaravelcollective/html項目が追加されます。

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.6.4",
        "laravel/framework": "5.4.*",
        "laravel/tinker": "~1.0",
        "laravelcollective/html": "^5.4"
    },

ProviderとAliaseを登録

config/app.php のProviderとAliaseに追加します。

vim config/app.php

Providerを追加

  'providers' => [
    // ...
    Collective\Html\HtmlServiceProvider::class,
    // ...
  ],

Aliaseを追加

   'aliases' => [
    // ...
      'Form' => Collective\Html\FormFacade::class,
      'Html' => Collective\Html\HtmlFacade::class,
    // ...
  ],

これで使えるようになります。

ついでに

FORMファサードに関するメモを残しておこうと思います

{{}}と{!!!!}の違い

{{ }}は エスケープ処理あり
{!! !!}は エスケープ処理なし
基本的にエスケープ処理なしを使うようです

FORMファサードとヘルパ関数を一緒に使う場合

例えばテキスト入力欄

{!!Form::text('test_name', 'FROG', ['class' => 'test'])!!}

この場合、第2引数のFROGがvalue値になるのですが、
valueにoldヘルパを使いたい場合

{!!Form::text('test_name', old('test_name'), ['class' => 'test'])!!}

になる

と思ったけど、違うかもしれない..
誰か分かる方が居ましたら教えて下さい....

属性の増やし方

例えばテキストの場合

{!!Form::text('test_name', 'FROG', ['class' => 'test_name','ID' => 'test'])!!}

これだと
第一引数がname属性
第二引数がvalue属性
なのですが、属性を増やしたい場合は
第三引数に追加が可能です

labelを使う場合

上記のようにIDを追加可能ですが
labelのforと結びつけたい場合はtextの方にIDを書かなくても大丈夫になっています。

labelとtextの第一引数を同じ値にする必要があります

{!!Form::label('test_name','文字')!!}

{!!Form::text('test_name', 'FROG', ['class' => 'test_class'])!!}

上記のように書くと下記のようになる。

<label for="test_name">文字</label>

<input class="test_class" name="test_name" type="text" value="FROG" id="test_name">

nameとidが必然的に同じになるということですね..

FrogWoman
(Qiitaに書いてる理由)自分用のメモでもあり、自分が躓いたところで他の人が同じように躓いて時間を無駄にするようなことが減るといいなあと思い書いてます。 間違い等があれば指摘してもらえると有難いです
http://frogwoman.hatenablog.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away