直接从公共文件夹加载 HTML 文件作为 Laravel 中的视图

Posted

技术标签:

【中文标题】直接从公共文件夹加载 HTML 文件作为 Laravel 中的视图【英文标题】:Load an HTML file directly from public folder as View in Laravel 【发布时间】:2015-10-30 01:20:03 【问题描述】:

我正在使用 Laravel。 我正在尝试整理我自己的结婚请柬。 我的公用文件夹中有一个文件夹,将样式和脚本用于它。

我想知道我是否可以指向该文件夹,而不是将所有内容复制并粘贴到新的刀片文件中。


路线

Route::get('/wedding', 'WeddingController@index');


婚礼主持

<?php namespace App\Http\Controllers;

class WeddingController extends Controller 


    public function index()
    
        return view('wedding.index');
    



问题

我想知道是否可以将我的索引函数指向我的 /public 文件夹中的一个文件夹中的index.html

我们是否必须从app/resources/views 目录加载.blade 文件?

对此的任何帮助/建议将不胜感激。

【问题讨论】:

如果有一个文件位于public/wedding/index.html,那么当你转到http://localhost/wedding 时,它将显示index.html 的内容,而无需调用 Laravel。不需要路由或控制器。 【参考方案1】:

只需将婚礼文件夹直接放在公用文件夹中即可:

mv wedding/ /path/to/laravel/public

然后访问带有婚礼后缀的网站网址:

http://my-site.com/wedding

这将从婚礼文件夹中加载index.html

这通过 nginxtry_files 指令在您的 /etc/nginx/sites-enabled/my-site 配置文件中工作:

location / 
    try_files $uri $uri/ /index.php?$query_string;

这指示 Nginx 首先搜索与 URL 对应的实际文件(例如,/css/app.css/wedding/index.html 等)。如果它没有找到匹配的文件(例如,它通常会返回 404 not found),那么它应该将查询字符串作为参数传递给 index.php 脚本。

【讨论】:

我怎么不用注册那条路线?你能详细说明一下吗? 我真的很喜欢这个解决方案。我不敢相信我做得比现在更难。 我看到了。非常感谢你做的这些。我会确保很快接受它。 我注意到,这在本地不起作用。只在服务器上工作。你知道为什么吗? 你是在本地使用 Nginx 还是其他的东西?【参考方案2】:

使用File Facade 从控制器加载静态文件

use File;

return File::get(public_path() . '/to new folder name/index.html');

【讨论】:

这不是我要问的。 我知道如何加载文件。这很容易。 对于 laravel 5.6 use Illuminate\Support\Facades\File;.【参考方案3】:

一种解决方案是将您的婚礼请柬的 index.html 重命名为 index.php 并将其放在您的 resources/views 文件夹中,以便它成为 Laravel 模板。

cd path/to/laravel
mkdir resources/views/wedding
mv public/wedding/index.html resources/views/wedding/index.php

然后您可以根据需要从控制器中调用它:

public function index()

    return view('wedding.index');

当然,使用此方法,您必须确保所有 CSS/javascript/图像 url 都正确映射到 public/ 文件夹中它们各自的位置。

【讨论】:

此解决方案仅在您重命名 index.html 时有效--> index.blade.php

以上是关于直接从公共文件夹加载 HTML 文件作为 Laravel 中的视图的主要内容,如果未能解决你的问题,请参考以下文章

403 从公共/图像文件夹 laravel vuejs xampp 加载图像时禁止

从非公共目录加载 css 或 javascript

是否可以直接从 html img 标签 src 向服务器请求文件并使用 jwt 身份验证标头加载它?

使用npm直接从github repo安装加载模块

Django在开发中直接从静态文件夹加载静态(不是来自应用程序)

Nextjs:无法从静态文件夹加载图像