#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公式サイトに記載してありました。
公式は英語で書かれているので、補足も交えて日本語でここに手順を書いておこうと思います。
##パッケージをComposerからインストール
cd Laravelプロジェクト
composer require "laravelcollective/html":"^5.4.0"
composer require laravelcollective/html
でもいいかと。
すると インストールが完了し、composer.json
に laravelcollective/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が必然的に同じになるということですね..