如何在laravel刀片模板引擎中同时回显字符串和变量?

时间:2014-04-29 03:57:35

标签: php laravel blade

我在PHP文件中使用此代码:

layout.blade.php

{{ HTML::script('js/abc.js'); }}

问题是abc对于不同的网页会有所不同,所以我需要将其更改为变量(即$js)以使值动态化。

目前我正在使用:

{{ HTML::script('js/'.$js.'.min.js') }}实现这一目标。

我想知道这是否是常规方法吗?还是有更好的方法吗?

我尝试使用{{ HTML::script('js/'.$js.'.min.js') or ''}}检查$js是否存在,但它无效。 @if (isset($js))是我唯一的解决方案吗?

感谢。

1 个答案:

答案 0 :(得分:1)

您使用HTML::script的方式并不可怕,这是完成工作的可接受方式!

我建议使用Form宏,如果由于任何其他原因,它在阅读模板时看起来更好,因为我尽量避免在我的视图中使用尽可能少的PHP。

app/start.php文件中,输入以下内容:

 Form::macro('javascript_file', function($js = null) {
    if ($js === null) return;

    return HTML::script( 'js/'.$js.'.min.js');
 }

然后在模板中你可以去:

@if isset($js)
{{ Form::javascript_file($js); }}
@endif

可悲的是,在调用javascript_file之前无法检查是否设置了$ js而没有看起来更难看......