我有这样的laravel应用程序的目录结构:
app/
admin/
controllers/
views/ -> for admin views
...
views/ -> for frontend views
如何在管理员中设置控制器的视图路径?我不想使用,View::addLocation
或者View::addNamespace
因为我可能具有与admin和frontend相同的视图文件名,并且不想为每个添加名称空间View::make('namespace::view.file')
。
我在http://laravel.com/api/4.2/Illuminate/View/View.html中看到了一种setPath
方法,但是我怎么称呼它呢?View::setPath
引发未定义的方法错误。
您有两种方法可以实现目标。首先,让我们看一下app/config/view.php
。这就是定义视图加载的路径。
这是默认值:
'paths' => array(__DIR__.'/../views'),
您可以轻松地将管理目录添加到阵列
'paths' => array(
__DIR__.'/../views',
__DIR__.'/../admin/views
),
现在的最大缺点是:视图名称必须唯一。否则,将采用首先指定的路径中的视图。
由于您不想使用视图命名空间,因此我想您也不想使用admin.viewname
任何一种语法。您可能会更喜欢方法2;)
可以使用该Config::set
方法在运行时更改每个Laravel配置。
Config::set('view.paths', array(__DIR__.'/../admin/views'));
显然,设置该配置不会更改任何内容,因为在应用程序引导时会加载该配置,此后会忽略该配置。
要在运行时更改路径,您必须创建的新实例FileViewFinder
。
看起来像这样:
$finder = new \Illuminate\View\FileViewFinder(app()['files'], array(app_path().'/admin/views'));
View::setFinder($finder);
您也可以在中删除默认路径 app/config/view.php
'paths' => array(),
然后View::addLocation
在任何情况下(前端和管理员)使用
View::addLocation(app_path().'/views');
View::addLocation(app_path().'/admin/views');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句