如何使用Laravel服务index.html?

Sah*_*bov 5 php laravel

我很难理解有人如何index.html使用Laravel 加载文件.它似乎只适用于index.php,这不是我想要的.

这是一个问题:

我有两个文件夹客户端和服务器.我的服务器文件夹包含整个Laravel应用程序.我的客户端目录包含AngularJS应用程序.(我不能使用公共目录)

我希望Laravel index.html与客户端目录中的所有静态文件一起提供服务.

改变'public' => __DIR__.'/../public'确实有点工作,但随后它打破了我的所有路线,即无论我输入什么URL index.html都加载了破坏的静态资产.例如/api/users,不再返回JSON对象,但是相同index.html.

小智 11

我不知道你的文件结构是怎么回事,但是,通过你可以使用的php引擎加载html文件:

View::addExtension('html', 'php');
Run Code Online (Sandbox Code Playgroud)

然后,

Route::get('/', function()
{
    return View::make('index');
});
Run Code Online (Sandbox Code Playgroud)

应该返回index.html.

  • 有人可以为Laravel 5更新这个吗? (3认同)

Jef*_*ert 3

我相信我现在理解你了。这是一个潜在的解决方案,假设目录结构类似于以下内容:

/
    /client
        index.html 
    /server
        /app
        /bootstrap
        /public
        /vendor
        ...
Run Code Online (Sandbox Code Playgroud)

在 Laravel 中使用刀片模板。您的机箱非常独特,因此它不会是“普通”刀片模板。它可以看起来像这样:

{{ file_get_contents(base_path() . '../client/index.html') }}
Run Code Online (Sandbox Code Playgroud)

如果您可以使用目录index.php内的文件,/client它也可能如下所示:

<?php include base_path() . '../client/index.php'; ?>
Run Code Online (Sandbox Code Playgroud)

我只是指出这一点,因为如果您需要或愿意,您可以在文件内使用其他 PHP 语句。您还可以将数据从控制器一路向下传递到该index.php文件中View::make('angular')->with('var', $var),并且它们将自动位于范围内。

这看起来有点老套,确实如此,但应该可以让您不必修改其他任何内容。当然,您的index.html文件应该包含角度应用程序的完整标记。另一个好处是,由于您几乎仍然完全包含在 Laravel 中,因此如果不需要(无论出于何种原因),您可以将内容“向上”移出角度应用程序并返回到框架中。