thepinecode / blade-filters
Requires
- php: ^7.2.5
- illuminate/support: ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- laravel/laravel: dev-master
- phpunit/phpunit: ^9.0
README
在Laravel Blade中轻松使用字符串过滤器。
如果您对包的工作原理有任何疑问,我们建议阅读这篇帖子:Laravel Blade Filters。
入门
您可以使用composer安装此包,运行composer require thepinecode/blade-filters
命令。
使用过滤器
您可以在任何blade模板中使用过滤器。
常规使用
{{ 'john' | ucfirst }} // John
链式使用
{{ 'john' | ucfirst | substr:0,1 }} // J {{ '1999-12-31' | date:'Y/m/d' }} // 1999/12/31
传递非静态值
{{ $name | ucfirst | substr:0,1 }} {{ $user['name'] | ucfirst | substr:0,1 }} {{ $currentUser->name | ucfirst | substr:0,1 }} {{ getName() | ucfirst | substr:0,1 }}
将变量作为过滤器参数传递
$currency = 'HUF' {{ '12.75' | currency:$currency }} // HUF 12.75
内置Laravel功能
{{ 'This is a title' | slug }} // this-is-a-title {{ 'This is a title' | title }} // This Is A Title {{ 'foo_bar' | studly }} // FooBar
限制
输出
Laravel支持三种类型的输出。原始 – ,常规 –
{{ }}
和转义(旧版) – {{{ }}}
。过滤器只能与常规输出一起使用。此外,过滤器不能直接在blade指令中使用。
为什么?原始应该保持原样。强制转义只应转义,而不进行修改。
位运算符
允许使用位运算符,但它们必须用括号括起来,因为它们使用相同的“管道运算符”。
{{ ('a' | 'b') | upper }} // C
过滤器
关于过滤器
过滤器是字符串函数,定义在Pine\BladeFilters\BladeFilters
外观中。原因在创建自定义过滤器部分中讨论。
可用的过滤器
此包附带一些内置过滤器,也可以使用默认的Laravel字符串方法。
货币
{{ '17.99' | currency:'CHF' }} // CHF 17.99 {{ '17.99' | currency:'€',false }} // 17.99 €
将
false
作为第二个参数传递将使符号右对齐。
日期
{{ '1999/12/31' | date }} // 1999-12-31 {{ '1999/12/31' | date:'F j, Y' }} // December 31, 1999
Lcfirst
{{ 'Árpamaláta' | lcfirst }} // árpamaláta
与PHP默认的
lcfirst()
不同,此过滤器可以与多字节字符串一起使用。
Reverse
{{ 'ABCDEF' | reverse }} //FEDCBA
Substr
{{ 'My name is' | substr:0,2 }} // My {{ 'My name is' | substr:3 }} // name is
Trim
{{ ' trim me ' | trim }} // trim me
Ucfirst
{{ 'árpamaláta' | ucfirst }} // Árpamaláta
与PHP默认的
ucfirst()
不同,此过滤器也可以与多字节字符串一起使用。
支持的内置Str函数
- Str::after()
- Str::before()
- Str::camel()
- Str::finish()
- Str::kebab()
- Str::limit()
- Str::plural()
- Str::singular()
- Str::slug()
- Str::snake()
- Str::start()
- Str::studly()
- Str::title()
创建自定义过滤器
如前所述,每个过滤器都是一个可以通过Pine\BladeFilters\BladeFilters
外观调用的方法。这样做有几个原因,但让我们看看最重要的几个:
- 通过使用
BladeFilters::macro()
扩展外观,可以轻松定义自定义过滤器。 - 无需额外文件、自动加载或类映射,只需使用任何服务提供商定义过滤器即可。
- 默认情况下,Laravel提供了一组方便的方法,我们可以将其用作过滤器。
参数排序
PHP对函数的参数排序不是很严格,因此这种方式更容易协调或覆盖它们。有时Laravel的字符串函数也是如此。重要的是只能使用接受以下顺序的参数的函数:
- 要转换的值
- 如果需要,任何其他参数
例如
BladeFilters::macro('filterName', function ($value, $param1 = 'default', $param2 = null) { return ...; }); {{ 'string' | filterName:1,2 }}
定义自定义过滤器
由于过滤器仅是定义在Str
外观和BladeFilters
类中的方法,因此要创建过滤器,您需要在服务提供商的boot()
方法中创建一个宏。
class AppServiceProvider extends ServiceProvider { public function boot() { BladeFilters::macro('substr', function ($value, $start, $length = null) { return mb_substr($value, $start, $length); }); } }
贡献
如果您发现了一个错误或您对这个包有一个想法,请随时提交一个问题。