conedevelopment/blade-filters

在Blade模板中轻松使用过滤器。

安装次数: 112,688

依赖项: 1

建议者: 0

安全: 0

星标: 490

关注者: 9

分支: 27

公开问题: 0

类型:项目

v1.1.0 2023-03-13 07:28 UTC

This package is auto-updated.

Last update: 2024-09-23 06:06:29 UTC


README

在Laravel Blade中轻松使用字符串过滤器。

如果您有任何关于该包如何工作的疑问,我们建议阅读这篇帖子:Laravel Blade Filters

入门

您可以使用composer安装此包,运行composer require conedevelopment/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函数

创建自定义过滤器

如前所述,每个过滤器都是一个可以通过Pine\BladeFilters\BladeFilters门面调用的方法。为什么这种做法更好,有几个原因,但让我们谈谈最重要的几个。

  • 通过使用BladeFilters::macro()扩展门面,可以轻松定义自定义过滤器。
  • 无需额外的文件、自动加载或类映射,只需使用任何服务提供器定义过滤器即可。
  • 默认情况下,Laravel提供了一组方便的方法,我们可以将它们用作过滤器。

参数顺序

PHP在函数参数顺序方面不是很严格,因此这种方式更容易协调或覆盖它们。有时这也适用于Laravel的字符串函数。重要的是只能使用接受以下顺序的参数的函数

  1. 要转换的值
  2. 如果需要,任何其他参数

例如

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);
        });
    }
}

贡献

如果您发现了一个错误或者您有一个与该包相关的想法,请随意开启一个issue。