「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();
    }
}
'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
參考文章


 
留言
張貼留言