alamin-appnap/blade-capture-directive
轻松在 Blade 模板中创建内联部分。
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- nunomaduro/collision: ^7.0|^8.0
- nunomaduro/larastan: ^2.0
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^10.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-09-22 15:38:52 UTC
README
此包引入了一个新的 @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)。有关更多信息,请参阅 许可证文件。