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的使用

Laravel Blade 模板部分重复/缓存错误

1+X web中级 Laravel学习笔记——blade模版

如何使用Laravel Blade模板呈现以下类型的表?