Php laravel从带有实际点的文件夹名称加载视图

Php laravel从带有实际点的文件夹名称加载视图,php,laravel,routing,Php,Laravel,Routing,我正在创建一个多域Laravel应用程序,因此我的视图文件位于每个域的单独文件夹中。例如,以下各项: return view('pages/' . $_SERVER['SERVER_NAME'] . '/public/home', []); 应在下加载视图 pages/domain.com/public/home.blade.php 但它却试图加载 pages/domain/co/public/home.blade.php 因为点符号 如何解决此问题?如果名称中有点,则需要添加视图名称空间

我正在创建一个多域Laravel应用程序,因此我的视图文件位于每个域的单独文件夹中。例如,以下各项:

return view('pages/' . $_SERVER['SERVER_NAME'] . '/public/home', []);
应在下加载视图

pages/domain.com/public/home.blade.php
但它却试图加载

pages/domain/co/public/home.blade.php
因为点符号


如何解决此问题?

如果名称中有点,则需要添加视图名称空间来设置特定文件夹的提示

$domain = 'domain.com';

View::addNamespace($domain, config('view.paths')[0]."/{$domain}/");

Route::get('example', function() use ($domain) {
    return view("{$domain}::home");
});

您可以使用
base\u path('resources/views')
而不是上面的示例
config('view.paths')[0]
,如果有人重新排序或更改
config('view.paths')的值,这可能会更明智一些。

也许您可以用下划线替换点:

$domain = str_replace('.', '_', $_SERVER['SERVER_NAME']);
return view('pages/' . $domain . '/public/home');
并在以下位置加载视图:

pages/domain_com/public/home.blade.php
应该行得通

return view('pages/domain.com/public/home',[]);

虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!