我很难理解有人如何使用Laravel加载index.html
文件。它似乎只适用于index.php,这不是我想要的。
这是一个问题:
我有两个文件夹客户端和服务器。我的服务器文件夹包含整个Laravel应用。我的客户端目录包含AngularJS应用。 (我不能使用公共目录)
我希望Laravel提供index.html
以及客户端目录中的所有静态文件。
更改'public' => __DIR__.'/../public'
确实有些工作,但随后它会中断我的所有路由,即无论我为URL index.html
键入什么,都会加载破坏的静态资产。例如,/api/users
不再返回JSON对象,而是返回index.html
。
答案 0 :(得分:11)
我不确定您的文件结构是怎么回事,但是,通过您可以使用的php引擎加载html文件:
View::addExtension('html', 'php');
然后,
Route::get('/', function()
{
return View::make('index');
});
应返回index.html。
答案 1 :(得分:2)
我相信我现在了解你。这是一个潜在的解决方案,假设目录结构与此类似:
/
/client
index.html
/server
/app
/bootstrap
/public
/vendor
...
在Laravel中使用刀片模板。您的案例非常独特,因此它不会成为“普通”的刀片模板。它看起来像这样:
{{ file_get_contents(base_path() . '../client/index.html') }}
如果您可以在index.php
目录中使用/client
文件,它也可能如下所示:
<?php include base_path() . '../client/index.php'; ?>
我只是指出了这一点,因为如果您需要或希望,您可以在文件内部使用其他PHP语句。您还可以将控制器中的数据一直向下传递到此index.php
文件中,并使用正常的View::make('angular')->with('var', $var)
,它们将自动在范围内。
这看起来有点hacky,而且确实应该让你不必修改任何其他内容。当然,您的index.html
文件应该包含角度应用程序的整个标记。另一个好处是,因为你几乎完全被Laravel所包含,所以你可以将你的东西“向上”移出你的角度应用程序,如果没有必要(无论出于何种原因),你可以回到框架中。
答案 2 :(得分:2)
如果您想使用php artisan serve
服务于本地开发,请在“ server.php”中更改以下几行
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
return false;
}
require_once __DIR__.'/public/index.php';
到
if ($uri === '/') {
$uri = "/index.html";
return false;
}
if (file_exists(__DIR__.'/public'.$uri)) {
return false;
}
require_once __DIR__.'/public/api/index.php';
现在您可以将“ index.html”用作默认文档。
仅当角度构建输出位于子文件夹中的laravel api(index.php和.htaccess)的公共文件夹中时有效。
希望它可以帮助某人!