【发布时间】:2015-11-13 03:39:55
【问题描述】:
如果刀片模板存在,如何@include only? 我可以做这样的事情:
@if (File::exists('great/path/to/blade/template.blade.php'))
@include('path.to.blade.template')
@endif
但这确实不够优雅和高效。
我可以在没有 if 语句的情况下包含它,如果文件不在这里,我可以捕获并隐藏错误,但这有点脏,如果不是野蛮的话。
这样的事情会很棒:
@includeifexists('path.to.blade.template')
(伪代码,但是这个刀片命令不存在)
【问题讨论】:
-
您当然可以通过添加自定义函数来隐藏
if语句来extend Blade,但我认为只有在您有大量此类案例可以使用它时才值得。 -
我只是想知道你为什么要包含一些不存在的东西或者你想要解决的场景是什么?
-
@mdamia :我有数百页,结构相同。有些有部分文件。我只为需要它的页面包含部分内容。我可以使用两个模板:一个包含需要它的页面的包含指令,另一个没有。但是第一种方式的逻辑更简单。
-
警告:只有在绝对需要时才使用所描述的东西。关于它的两个缺点:首先,由于它不是标准方法,您的同事首先会感到困惑 - 这不符合 KISS 原则。其次,我猜这会导致页面稍微变慢,因为 PHP 必须检查文件是否存在才能包含它(我猜)。