在 Laravel 5.x 中添加带有刀片引擎代码的外部 javascript 文件?
Posted
技术标签:
【中文标题】在 Laravel 5.x 中添加带有刀片引擎代码的外部 javascript 文件?【英文标题】:Add external javascript files with blade engine code in Laravel 5.x? 【发布时间】:2015-10-09 23:31:34 【问题描述】:我有多个 javascript 文件,其中很多是由 laravel 模板引擎准备的。例如滥用:
@if ($group_id !== 3)
//do something here
@endif
一切都很好,当生病时,将 javascript 代码直接包含到我的 filename.blade.php 模板中。
但我想加载所有外部:
<script type="text/javascript">
$.getScript("js/pages/filename.js");
</script>
所以它没有被刀片引擎处理。我为 L4 找到了一些解决方案,但我对它们并不满意。例如,您应该将您的 javascript 文件命名为 javascript.blade.php 并以这种方式包含它 - 但是我的 IDE 认为它是一个 PHP 文件并格式化它完全错误。这里的其他解决方案是在包含之前编写您的(本示例中的组),例如:
<script type="text/javascript">
var group = !! $group_id !!
$.getScript("js/pages/filename.js");
</script>
我仍然对那个解决方案不太满意,我希望所有文件都应该被处理,因为它直接包含在我的刀片文件中。
有解决办法吗?
提前致谢。
【问题讨论】:
您想在每个刀片模板上添加不同的文件吗?还是使用刀片中的 IF 通过验证加载 javascript 文件? 感谢您的回答!是的,有几个刀片模板文件。对于每个模板,我都有一个我想添加的 javascript 文件。有很多针对不同组的自定义代码(例如在数据表中),因此为特定组创建一个处理过的 JS 文件会很好。所以“if”直接在JS文件中。 我没有清楚地理解您的想法,但是如果您想根据组加载每个文件,您可以为额外文件创建一个部分,并在此部分管理每个组,并加载特定文件.如果这不是这个想法,请告诉我。 不,这不是一个好主意。例如。您将获得 1 个大型数据表,但每个组的列不同,因此请直接在 javascript 中使用刀片为每个组修改列。我不想在相同内容下创建多个 JS 文件(仅针对每个组) - 我更喜欢刀片引擎处理的 1 个文件。 【参考方案1】:假设您有以下外部 JS 脚本(还包括一些刀片引擎代码):
first.js
首先要在任何其他刀片文件中使用此脚本,请将上述文件重命名为:
first.blade.php(但记得将整个脚本代码放在脚本标签内!!)
现在通过以下方式将此文件包含在您的其他刀片文件中:
@include('someViewFolder.first') 假设您已将 first.blade.php 放在“someViewFolder”文件夹中。
我希望这会有所帮助,干杯。
【讨论】:
你好。感谢您的回答,这里的问题是(如上所述)我的 IDE(PHPStorm)没有格式化正确的 javascript,如果它是一个 .php 文件。所以它工作正常,但无用/难以调试。以上是关于在 Laravel 5.x 中添加带有刀片引擎代码的外部 javascript 文件?的主要内容,如果未能解决你的问题,请参考以下文章
在laravel 7刀片中获取带有if not null条件的URL参数
我可以在 symfony 中使用刀片模板引擎(laravel)吗?