我需要一些帮助-我想更改网站的整个设计,但是我希望可以选择切换回旧的设计。
我当前的文件夹结构是:
resources/views/frontend/...
我希望具有以下文件夹结构:
resources/views/frontend/v1/...
resources/views/frontend/v2/...
在我的配置文件中,我想要一个可变版本,该版本将保存活动模板的版本。
问题在于,现在我需要在所有Controllers和Views中使用此变量,这需要大量工作。我只想在“视图”中更改变量。是否有人面对过这种情况并有更好的解决方案?
答案 0 :(得分:2)
如果您不需要从管理页面切换主题/设计,则只需在config/view.php
文件中设置视图的路径:
/*
|--------------------------------------------------------------------------
| View Storage Paths
|--------------------------------------------------------------------------
|
| Most templating systems load templates from disk. Here you may specify
| an array of paths that should be checked for your views. Of course
| the usual Laravel view path has already been registered for you.
|
*/
'paths' => [
resource_path('views'),
resource_path('theme/v1/views'),
],
将加载resources/theme/views/
中的视图以及resources/views
目录中的视图。
请注意顺序:如果两个文件共享相同的名称,则定义的第一个路径将具有更高的优先级。
另一种防止文件名冲突的解决方案是使用命名空间视图。在您的AppServiceProvider
中,将其添加到boot()
方法中:
$this->loadViewsFrom(resource_path('theme2/views'), 'theme2');
请参见https://laravel.com/docs/6.x/packages#views
在两种情况下,都可以在配置中使用变量。例如,在您的config/app.php
中:
return [
// Leave the configuration and add:
'theme' => 'v1',
];
然后,在config/view.php
中:
'paths' => [
resource_path('views'),
resource_path('theme/'.config('app.theme').'/views'),
],
如果要使用环境变量(在本地环境和生产环境中具有不同的主题):
'paths' => [
resource_path('views'),
resource_path('theme/'.env('APP_THEME').'/views'),
],
并在您的.env
中:
APP_THEME=v1
答案 1 :(得分:0)
我找到了解决方法:
我在启动方法中的app \ Providers \ AppServiceProvider.php中添加了名称空间:
$this->app['view']->addNamespace('theme', base_path().'/resources/views/frontend/.config('version'));
我需要在所有Controller和View中进行一些更改,但这只是一次。
在任何我更改的控制器中:
return view('frontend.partials.banner')->withBanner($banner);
收件人:
return view('theme::partials.banner')->withBanner($banner);
以及在以下任何视图中
@include('frontend.standing.partials.shorttable')
收件人:
@include('theme::standing.partials.shorttable')