【问题标题】:how to echo strings and variable simultaneously in laravel blade template engine?如何在 laravel 刀片模板引擎中同时回显字符串和变量?
【发布时间】:2014-04-29 15:00:17
【问题描述】:

我在我的 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)) 是我唯一的解决方案吗?

谢谢。

【问题讨论】:

  • $js 是怎么设置的?你扫描目录吗?还是只是简单的字符串赋值?
  • @kevinabelita 在routes.php 中使用with 方法,即->with('js', 'index')

标签: php laravel blade


【解决方案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 而不让它看起来更丑...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 2014-12-08
    • 2013-02-07
    • 1970-01-01
    • 2014-02-07
    • 2015-01-11
    • 2017-09-07
    相关资源
    最近更新 更多