「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
參考文章
留言
張貼留言