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


laravel load view from a folder name with actual dot

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