laravel - 如何在laravel中设置 View 文件路径?

标签 laravel

我有一个 laravel 应用程序的目录结构,如下所示:

app/
   admin/
      controllers/
      views/ -> for admin views
   ...
   views/ -> for frontend views

如何在管理员中设置 Controller 的 View 路径?我不想用 View::addLocationView::addNamespace因为我可能有相同的管理和前端 View 文件名,并且不想为每个 View::make('namespace::view.file') 添加命名空间.

我在 http://laravel.com/api/4.2/Illuminate/View/View.html 看到有一个 setPath方法,但我如何调用它? View::setPath引发未定义的方法错误。

最佳答案

你有两种方法来实现你的目标。首先我们来看app/config/view.php .这就是定义 View 加载路径的地方。

这是默认值:

'paths' => array(__DIR__.'/../views'),

方法一:加载两个目录

您可以轻松地将管理目录添加到阵列
'paths' => array(
    __DIR__.'/../views',
    __DIR__.'/../admin/views
),

现在最大的缺点是: View 名称必须是唯一的。否则将采用首先指定的路径中的 View 。
由于您不想使用 View 命名空间,我想您不想要像 admin.viewname 这样的语法。任何一个。你可能会更喜欢方法 2 ;)

方法二:运行时更改 View 页面

每个 Laravel 配置都可以在运行时使用 Config::set 进行更改方法。
Config::set('view.paths', array(__DIR__.'/../admin/views'));

显然,设置配置不会改变任何东西,因为它在应用程序引导时加载并在之后被忽略。

要在运行时更改路径,您必须创建 FileViewFinder 的新实例。 .
下面是它的样子:
$finder = new \Illuminate\View\FileViewFinder(app()['files'], array(app_path().'/admin/views'));
View::setFinder($finder);

方法 3:使用 addLocation 但没有默认路径

您还可以删除 app/config/view.php 中的默认路径
'paths' => array(),

然后使用 View::addLocation在任何情况下(前端和管理员)
View::addLocation(app_path().'/views');
View::addLocation(app_path().'/admin/views');

关于laravel - 如何在laravel中设置 View 文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27458439/

相关文章:

mysql - 难以获取前 3 名学生的详细信息 谁迟到了

php - Laravel:belongsTo() 关系假定一对多关系而不是一对一

php - Laravel,如何避免私有(private)聊天 api 结构中的 n + 1 问题?

php - Laravel (php) 保存搜索选项

php - 没有从关联表中提取数据 : Laravel

php - OctoberCMS 如何重写用户插件的 onRegister() 函数?

javascript - Particles Js Canvas 显示在页面的最底部

laravel - 如何知道 Blade 模板中数组的大小?

php - 如果不从一个表中选择,则检查任一表上是否存在数据

database - Laravel DB::rollback() 不适用于交易流程