我正在阅读Laravel Blade文档,我不知道如何在模板中分配变量以供以后使用。我不能使用{{$old_section = "whatever"}},因为这将会返回"whatever",而我不想这样做。
我知道我可以做<?PHP $old_section = "whatever";>,但这并不优雅。
在Blade模板中是否有更好、更优雅的方式来做到这一点?
我正在阅读Laravel Blade文档,我不知道如何在模板中分配变量以供以后使用。我不能使用{{$old_section = "whatever"}},因为这将会返回"whatever",而我不想这样做。
我知道我可以做<?PHP $old_section = "whatever";>,但这并不优雅。
在Blade模板中是否有更好、更优雅的方式来做到这一点?
当前回答
Laravel 5你可以很容易做到这一点。见下文
{{--*/ @$variable_name = 'value' /*--}}
其他回答
突然之间什么也不会出现。 根据我的经验,如果你必须做这样的事情,在模型的方法中准备html,或者在数组中重新组织你的代码。
永远不会只有一种方法。
{{ $x = 1 ? '' : '' }}
入侵评论并不是一种非常可读的方式。此外,编辑器会将其着色为注释,有人在查看代码时可能会错过它。
试试这样做:
{{ ''; $hello = 'world' }}
它将编译成:
<?php echo ''; $hello = 'world'; ?>
...完成作业,不要重复任何东西。
我将扩展@Pim给出的答案。
将此添加到AppServiceProvider的引导方法中
<?php
/*
|--------------------------------------------------------------------------
| Extend blade so we can define a variable
| <code>
| @set(name, value)
| </code>
|--------------------------------------------------------------------------
*/
Blade::directive('set', function($expression) {
list($name, $val) = explode(',', $expression);
return "<?php {$name} = {$val}; ?>";
});
这样就不会暴露编写任何php表达式的能力。
你可以像这样使用这个指令:
@set($var, 10)
@set($var2, 'some string')
分配变量刀片模板,这里是解决方案
我们可以使用<?刀片页面中的PHP ?>标记
<?php $var = 'test'; ?>
{{ $var }
OR
我们可以用特殊的语法使用刀片注释
{{--*/ $var = 'test' /*--}}
{{ $var }}
拉拉维尔 7 :
{{ $solution = "Laravel 7 is awesome and easy to use !!" }}