alamin-appnap/blade-capture-directive

轻松在 Blade 模板中创建内联部分。

v2.0.5 2024-03-22 14:18 UTC

This package is auto-updated.

Last update: 2024-09-22 15:38:52 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包引入了一个新的 @capture 指令,允许您捕获 Blade 模板的小部分并在以后重用,而无需将它们提取到部分中。

安装

您可以通过 Composer 安装此包

composer require ryangjchandler/blade-capture-directive

使用方法

此包添加了一对新的指令: @capture@endcapture

@capture 指令将捕获所有 Blade 代码,直到遇到 @endcapture 指令。它将代码存储在变量中,以便稍后使用。

@capture($hello)
    Hello, world!
@endcapture

此指令至少需要一个参数。此参数应该是您希望将部分分配给的一个 PHP 变量。该变量本身将成为一个 Closure,可以在 Blade 输出标签({{ }})中调用,在定义之后。

@capture($hello)
    Hello, world!
@endcapture

{{ $hello() }}

上面的代码将在 Laravel 编译后输出 Hello, world! 并在浏览器中渲染。

@capture 指令也支持参数。这意味着您可以捕获通用的 Blade 片段并动态更改输出。这是通过指定逗号分隔的 PHP 变量列表来实现的

@capture($hello, $name)
    Hello, {{ $name }}!
@endcapture

上面的代码将要求在 $hello() 中传递一个名称,如下所示

@capture($hello, $name)
    Hello, {{ $name }}!
@endcapture

{{ $hello('Ryan') }}

Blade 将编译此代码,并且您的视图将输出 Hello, Ryan!。酷吧?

参数列表可以像在函数上定义的任何参数集一样处理。这意味着您可以指定默认值和多个参数

@capture($hello, $name, $greeting = 'Hello, ')
    {{ $greeting }} {{ $name }}!
@endcapture

{{ $hello('Ryan') }}
{{ $hello('Taylor', 'Yo, ') }}

上面的代码现在将输出 Hello, Ryan! 以及 Yo, Taylor!。这真的很酷,我知道!

继承范围

所有捕获的块都将继承父范围,就像 Blade 中的常规部分一样。这意味着您可以使用传递给视图的任何数据,而无需手动将其传递给块。

@php($name = 'Ryan')

@capture($hello)
    Hello, {{ $name }}!
@endcapture

{{ $hello() }}

如果捕获的块有一个与继承范围中的预定义变量同名参数,则块的参数将始终优先。

测试

composer test

变更日志

请参阅 变更日志 以获取有关最近更改的更多信息。

贡献

请参阅 贡献指南 以获取详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件