【问题标题】:Use Laravel @include directive with non PHP files?对非 PHP 文件使用 Laravel @include 指令?
【发布时间】:2016-07-29 01:59:23
【问题描述】:

我一直在寻找一种方法来使用具有非 PHP 文件扩展名的 Laravel Blade 模板引擎(而不是 file_name.blade.php 能够使用 file_name.blade.jsfile_name.blade.css)无济于事。我找到了一个post,它似乎描述了如何为 Laravel 4 做到这一点,但它似乎不再在 Laravel 5 中工作。我想这样做的原因是我有一个看起来像这样的 Javascript 文件:

//JS stuff
@foreach($Model->Values as $Value)
    {{ $Value->name . " = " . $Value->content . ";"}}
@endforeach
//More JS stuff

还有一个看起来像这样的刀片/php 文件:

//Blade stuff
<script type="text/javascript">
@include('js');
</script>

这似乎是将每个值传递给 javascript 的最佳方式。即使有更好的方法将这些值传递给 javascript,这个问题背后的原因是寻找是否有一种方法可以用刀片解析非 PHP 文件,因为我认为这可能非常有用。

【问题讨论】:

  • U 有点提到这一点并且不同意,但我认为这不是最好的方法,而且我不确定您为什么要在 html 文件之外使用刀片。这样做的目的是为 html 添加更多功能,但如果你使用 js 之类的东西,你已经可以在没有刀片的情况下进行迭代
  • 我认为View::addExtension('blade.js', 'blade') 也可以在 L5 中使用。方法没有改变。但请注意,您需要刀片引擎,而不是您链接到的帖子中的 html 引擎。不过,把它放在哪里是个好问题。此外,您提到您的两个文件在扩展名之前具有相同的名称 - 这也可能会搞砸。
  • 优秀点@JoelHinz。将其发布为答案,因为它是正确的解决方案。
  • 感谢您的确认,@Bogdan,我会的。 :)

标签: php laravel laravel-5


【解决方案1】:

我认为View::addExtension('blade.js', 'blade') 也可以在 L5 中使用。方法没有改变。但请注意,您需要刀片引擎,而不是您链接到的帖子中的 html 引擎。不过,把它放在哪里是个好问题。另外,您提到您的两个文件在扩展名之前具有相同的名称 - 这也可能会搞砸。

【讨论】:

  • 只有一个具有唯一名称的文件。我使用的是刀片引擎,而不是我链接到的 html 引擎。 View::addExtension('blade.js', 'blade') 仍然可以工作,您可能是对的,但是在将它添加到我的 BaseController 之后,它似乎不起作用。我的 BaseController 看起来像 this
  • @C.Liddell 因为我看到您正在尝试实现旧的 Laravel 4.2 控制器布局方法(为了支持模板继承而停止使用),您在哪里调用 setupLayout 方法?因为由于 Laravel 5 没有该方法作为核心控制器类的一部分,它不再为您自动调用它。
  • @Bogdan 添加您的上述评论作为答案。就像调用 setupLayout() 方法一样简单,我误以为它是 Laravel 自动调用的。谢谢你们两位的帮助。
  • 谢谢两位。去睡觉了,所以我没有反应。 @Bogdan,请随意相信并获得公认的答案。 :)
猜你喜欢
  • 2021-10-14
  • 2017-11-20
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2020-10-23
  • 1970-01-01
相关资源
最近更新 更多