Laravel Blade @include .html 文件
Posted
技术标签:
【中文标题】Laravel Blade @include .html 文件【英文标题】:Laravel Blade @include .html files 【发布时间】:2014-12-10 05:21:43 【问题描述】:使用刀片包含 html 文件
我可以在 Laravel 4 Blade 中包含 .html
文件而不是 .php
吗?
我的代码:
@include('emails.templates.file')
//file is email.html
file
自动成为.php
文件..
【问题讨论】:
为什么需要?从技术上讲,您已经在刀片模板中使用了 HTML。只要确保扩展名是 .blade.php 而不仅仅是 .php 并且你拼写“include”正确:) 我必须在浏览器中包含默认电子邮件 是的,但是这些默认电子邮件在 PHP 文件中显示得非常好。随着 Weblineindia 的回答,它不再是一个刀片包含(失败的目的) Loading a laravel view with .html extension的可能重复 【参考方案1】:如果它是一个外部文件,那么你可以试试这个:
<?php include app_path() . '/views/<path_to_layout/emails>/file.html'; ?>
如果问题仍然存在,请告诉我。
【讨论】:
【参考方案2】:虽然@PHPWeblineindia 的解决方案对你有用,但它并不是真正的 Laravel 方式。
但是,你可以通过告诉 Laravel 的视图系统也考虑 .html
文件来做你想做的事。默认情况下,它会查找.blade.php
文件,然后回退到.php
文件。您可以通过在引导代码中的某处添加以下内容,将 .html
添加到搜索到的扩展中:
// tells the view finder to look for `.html` files and run
// them through the normal PHP `include` process
View::addExtension('html', 'php');
这实际上会将 HTML 置于最高优先级,因此请确保您没有两个不同的视图,它们被称为具有不同扩展名的同一事物。
【讨论】:
您也可以将此添加到基本控制器以全局应用。 是的,但我建议在应用程序引导代码(或服务提供者,这几乎是一回事)中而不是在基本控制器中以防万一。 @alexrussell 你所说的引导代码是什么意思,它在 Laravel 中的位置是什么?我对运行 Laravel 5.2 的 Laravel 相当陌生,我尝试在受保护的方法setupLayout()
中将 View::addExtension
添加到我的 BaseController 中。这样做的结果是,当尝试使用 include 时,Laravel 只返回 View [view.name] not found
其中 view.name 有一个 .html
扩展名。
根据我最初回答的时间,它实际上更适合 Laravel 4.2。然而,应用程序引导代码是通用的——基本上是在大多数其他代码之前运行的任何代码。在 L4.2 中,标准(尽管很脏)的方式是将其放入路由文件中。从 L5 开始,我们就有了服务提供者,所以也许是 AppServiceProvider,或者,理想情况下,新的服务提供者可以进行所需的视图更改。也就是说,我不知道原来的 View::addExtension()
调用是否仍然存在于 L5 中。
@alexrussell 无论如何感谢您的帮助。我将针对 Laravel 5 提出一个新问题,我认为 View::addExtension()
不再有效。以上是关于Laravel Blade @include .html 文件的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - Blade:@include 一个带有自动“文件名注释”的模板
@include Laravel Blade 模板以使用 Javascript 追加
Laravel - blade 基础语法和include的使用