直接从 public 文件夹加载 HTML 文件作为在 Laravel 中查看

Load an HTML file directly from public folder as View in Laravel

我正在使用 Laravel。 我正在尝试制作我自己的结婚请柬。 我的 public 文件夹中有一个文件夹,将为其设置样式和脚本。

我想知道我是否可以指向该文件夹,而不是 copy-and-paste 将所有内容都指向一个新的 blade 文件。


路线

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 文件夹中即可:

mv wedding/ /path/to/laravel/public

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

http://my-site.com/wedding

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

这通过 /etc/nginx/sites-enabled/my-site 配置文件中 Nginx 的 try_files 指令起作用:

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

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

一个解决方案是将您的婚礼请柬的 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/image 网址都正确映射到 public/ 文件夹中的相应位置。

使用File Facade

从控制器加载静态文件
use File;

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