「Laravel」如何使用 Form::macro(laravelcollective/html)

2020.04.10 更新補充: laravelcollective/html 版本6.0,安裝後就可以直接使用了~不需要設定任何檔案。

laravelcollective/html官網

測試版本
Laravel Framework 5.7.20

確認有安裝 laravelcollective/html 不然就需要安裝
composer require laravelcollective/html


方法一、比較簡單的方式
新增
/app/Providers/FormMacroServiceProvider.php


namespace App\Providers;

use Form;
use Collective\Html\HtmlServiceProvider;

class MacroServiceProvider extends HtmlServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        Form::macro('selectWeekDay', function () {
            $days = [
                'monday'    => 'Monday',
                'tuesday'   => 'Tuesday',
                'wednesday' => 'Wednesday',
                'thursday'  => 'Thursday',
                'friday'    => 'Friday',
                'saturday'  => 'Saturday',
                'sunday'    => 'Sunday',
            ];
            return Form::select('day', $days, null, ['class' => 'form-control']);
        });

    }

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

修改/config/app.php


'providers' => [
    // ...
    App\Providers\MacroServiceProvider::class,
],

接下來就可以開始使用了~~~

{!! Form::selectWeekDay() !!}



也可以這樣寫

Form::macro('number', function($name, $value = null, $options = array()) {        
    $value = (is_null($value) or $value == '') ? \Input::get($name) : $value;
    $input = ' $value) {
        $input .= ' ' . $key . '="' . $value . '"';
    }

    return $input . '>';
});

{!! Form::number('unit', null, ['class' => 'form-control']) !!}

如果自訂的方式有點多,可以使用這樣的方式
/app/Providers/FormMacroServiceProvider.php

 public function boot()
    {
        require base_path() . '/resources/macros/macro1.php';
        require base_path() . '/resources/macros/macro2.php';
        // etc...
    }


方法二、稍微繁瑣了一點...因為沒有使用,所以轉貼連結給大家參考,有空再來補上
https://medium.com/@NahidulHasan/how-to-use-macros-in-laravel-a9078a0610f9


參考文章

留言

這個網誌中的熱門文章

[MAC] MacBook Air 2012 手動換硬碟

[PHP] 將陣列中重複的值刪除最好方法 array_flip (移除陣列中重複的值)

[Linux] 看懂 Linux Memory Usage 記憶體使用率