在我的Laravel 4应用程序的根目录中,我有一个文件夹 themes
。在 themes
文件夹中,我有 default
和 azure
。
如何从特定路线中的 themes/default
文件夹访问视图。
Route::get('{slug}', function($slug) {
// make view from themes/default here
});
-app
- 主题
---默认
---天青
我需要从localhost/laravel/app/themes/default
文件夹加载视图。请解释一下。
答案 0 :(得分:37)
这完全可以用Laravel 4.你所追求的实际上是视图环境。 您可以注册命名空间提示,也可以只注册查找器将级联的额外位置。看看here
你要添加一个这样的位置:
View::addLocation('/path/to/your/views');
如果你命名它们可能会更容易,只是如果你的文件名有冲突,因为你的路径被附加到数组,所以它只会级联到目前为止,直到它找到一个合适的匹配。命名空间视图使用双冒号语法加载。
View::addNamespace('theme', '/path/to/themes/views');
return View::make('theme::view.name');
您还可以为addNamespace提供一组视图路径而不是单个路径。
答案 1 :(得分:26)
此处我无法从 public
文件夹访问我的项目。而不是这个我从项目根本身访问。
我看过有关 Using alternative path for views
here的论坛讨论。但我对这一点感到困惑。讨论的解决方案是,
您可以添加 location
,
View::addLocation('/path/to/your/views');
然后为主题添加 namespace
,
View::addNamespace('theme', '/path/to/themes/views');
然后渲染它,
return View::make('theme::view.name');
/path/to/
的价值是多少?
我可以在不改变路径的情况下在不同的操作系统中使用相同的项目吗?
是的,我们可以使用以下内容执行此操作,
将以下内容放入app/start/global.php
View::addLocation(app('path').'/themes/default');
View::addNamespace('theme', app('path').'/themes/default');
然后像默认方式一样调用视图,
return View::make('page');
这将从page.php
文件夹中呈现page.blade.php
或project_directory/app/themes/defualt
文件。
答案 2 :(得分:2)
我为laravel 5开发了一个主题包,其功能如下:
在此处试试:igaster/laravel-theme
答案 3 :(得分:0)
\View::addLocation($directory);
运行正常,但新的正确方法是使用loadViewsFrom($path, $namespace)
(可在任何服务提供商处使用)。