Forms & HTMLにてCustom Componentを登録

Tag:

ヘルパー関数パッケージである「Forms & HTML」にて「Custom Component」を登録する方法について取り上げます。

https://laravelcollective.com/docs/5.2/html#custom-components」で紹介されている内容の補足になります。

パッケージの追加

composer require laravelcollective/html

Custom Componentを登録用のサービスプロバイダーを作成

php artisan make:provider FormServiceProvider

「App\Providers\FormServiceProvider」の記述は以下のようにしました。

<?php

namespace App\Providers;

use Form;
use Illuminate\Support\ServiceProvider;

class FormServiceProvider extends ServiceProvider
{

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        // Register the form components
        Form::component('bsText', 'components.form.text', ['name', 'value' => null, 'attributes' => []]);
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

}

bootメソッド内でカスタムコンポーネントを登録しています。

config/app.php を編集

サービスプロバイダーの登録、ファサードの登録を行います。

return [
    'providers' => [
 
        // ...
 
        Collective\Html\HtmlServiceProvider::class,  // 追加
        App\Providers\FormServiceProvider::class,    // 追加
    ],
 
    'aliases' => [
 
        // ...
 
        'Form' => Collective\Html\FormFacade::class,  // 追加
        'Html' => Collective\Html\HtmlFacade::class,  // 追加
    ],
];

カスタムコンポーネント用のviewを作成

resources/views/components/form/text.blade.phpを作成

<div class="form-group">
    {{ Form::label($name, null, ['class' => 'control-label']) }}
    {{ Form::text($name, $value, array_merge(['class' => 'form-control'], $attributes)) }}
</div>

カスタムコンポーネントの呼び出し

作成したカスタムコンポーネントは、以下のようにして呼び出せます。

{{ Form::bsText('first_name') }}

スポンサーリンク