我正在创建一个多域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_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',[]);