如何从Laravel 4中的备用目录加载视图

dev*_*evo 29 php namespaces laravel laravel-4

在我的Laravel 4应用程序的根目录中,我有一个文件夹themes.在themes文件夹里面,我有defaultazure.如何themes/default在特定路径中访问此文件夹中的视图.

Route::get('{slug}', function($slug) {
    // make view from themes/default here
});
Run Code Online (Sandbox Code Playgroud)

我的目录结构:

-app

--themes

- -默认

---蔚蓝

我需要从localhost/laravel/app/themes/default文件夹加载视图.请解释一下.

Chi*_*hah 37

Laravel 4完全可以实现这一点.您所追求的实际上是视图环境.您可以注册命名空间提示,也可以只注册查找器将级联的额外位置.看看这里

你要添加一个这样的位置:

View::addLocation('/path/to/your/views');
Run Code Online (Sandbox Code Playgroud)

如果你命名它们可能会更容易,只是如果你的文件名有冲突,因为你的路径被附加到数组,所以它只会级联到目前为止,直到它找到一个合适的匹配.命名空间视图使用双冒号语法加载.

View::addNamespace('theme', '/path/to/themes/views');

return View::make('theme::view.name');
Run Code Online (Sandbox Code Playgroud)

您还可以为addNamespace提供一组视图路径而不是单个路径.


dev*_*evo 26

在这里,我不是从public文件夹访问我的项目.而不是这个我从项目根本身访问.

在这里看过一个论坛讨论.但我对这一点感到困惑.讨论的解决方案是,Using alternative path for views

你要添加一个location像,

View::addLocation('/path/to/your/views');
Run Code Online (Sandbox Code Playgroud)

然后添加namespace主题,

View::addNamespace('theme', '/path/to/themes/views');
Run Code Online (Sandbox Code Playgroud)

然后渲染它,

return View::make('theme::view.name');
Run Code Online (Sandbox Code Playgroud)

什么是价值/path/to/

我可以在不改变路径的情况下在不同的操作系统中使用相同的项目吗

是的,我们可以使用以下方法执行此操作,

把以下内容放入 app/start/global.php

    View::addLocation(app('path').'/themes/default');
    View::addNamespace('theme', app('path').'/themes/default');
Run Code Online (Sandbox Code Playgroud)

然后像默认方式一样调用视图,

    return View::make('page');
Run Code Online (Sandbox Code Playgroud)

这将从文件夹中呈现page.phppage.blade.php归档project_directory/app/themes/defualt.