如何在 Laravel Blade 模板中设置变量
2022-08-30 06:02:55
我正在阅读Laravel Blade文档,我无法弄清楚如何在模板中分配变量以供以后使用。我不能这样做,因为这会呼应“任何东西”,我不想那样。{{ $old_section = "whatever" }}
我知道我能做到,但这并不优雅。<?php $old_section = "whatever"; ?>
有没有更好、更优雅的方法可以在 Blade 模板中执行此操作?
我正在阅读Laravel Blade文档,我无法弄清楚如何在模板中分配变量以供以后使用。我不能这样做,因为这会呼应“任何东西”,我不想那样。{{ $old_section = "whatever" }}
我知道我能做到,但这并不优雅。<?php $old_section = "whatever"; ?>
有没有更好、更优雅的方法可以在 Blade 模板中执行此操作?
拉拉维尔 5.5 及以上
使用刀片式服务器指令的完整形式:
@php
$i = 1
@endphp
拉拉维尔 5.2 - 5.4
您可以使用内联标签:
@php ($i = 1)
或者,您可以在块语句中使用它:
@php
$i = 1
@endphp
添加“定义”标记
如果要使用自定义标记并使用@define而不是@php,请按如下方式扩展 Blade:
/*
|--------------------------------------------------------------------------
| Extend blade so we can define a variable
| <code>
| @define $variable = "whatever"
| </code>
|--------------------------------------------------------------------------
*/
\Blade::extend(function($value) {
return preg_replace('/\@define(.+)/', '<?php ${1}; ?>', $value);
});
然后执行下列操作之一:
快速解决方案:如果您很懒惰,只需将代码放在AppServiceProvider的boot()函数中.php。
更好的解决方案:创建自己的服务提供商。请参阅 https://stackoverflow.com/a/28641054/2169147 如何在 Laravel 5 中扩展刀片。以这种方式工作得更多,但是有关如何使用提供程序的良好练习:)
拉拉维尔 4
你可以把上面的代码放在app/start/global的底部.php(或者如果你觉得更好,可以放在其他任何地方)。
完成上述更改后,您可以使用:
@define $i = 1
以定义变量。
不鼓励在视图中执行此操作,因此没有刀片标记。如果确实要在边栏选项卡视图中执行此操作,可以在编写时打开 php 标记,也可以注册新的叶片标记。举个例子:
<?php
/**
* <code>
* {? $old_section = "whatever" ?}
* </code>
*/
Blade::extend(function($value) {
return preg_replace('/\{\?(.+)\?\}/', '<?php ${1} ?>', $value);
});