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

2022-08-30 15:09:51

在我的Laravel 4应用程序的根目录中,我有一个文件夹主题。在主题文件夹中,我有默认azure。如何从特定路由中的此主题/默认文件夹访问视图。

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

我的目录结构:

-应用程序

--主题

---缺省

---azure

我需要从文件夹中加载视图。请对此进行解释。localhost/laravel/app/themes/default


答案 1

这在Laravel 4中是完全可能的。你所追求的实际上是视图环境。您可以注册命名空间提示,也可以只注册查找器也会级联的额外位置。看看这里

您可以添加一个位置,如下所示:

View::addLocation('/path/to/your/views');

但是,如果对它们进行命名空间,可能会更容易,以防万一由于路径附加到数组而存在冲突的文件名,因此它只会级联到到目前为止,直到找到适当的匹配项。命名空间视图使用双冒号语法加载。

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

return View::make('theme::view.name');

还可以为 addNamespace 提供视图路径数组,而不是单个路径。


答案 2

在这里,我没有从公用文件夹访问我的项目。取而代之的是,我从项目根目录本身访问。

我在这里看到了一个关于使用替代路径的观点的论坛讨论。但我对此并不感到困惑。讨论的解决方案是,

您可以添加一个位置,例如,

View::addLocation('/path/to/your/views');

然后为主题添加命名空间

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.phppage.blade.phpproject_directory/app/themes/defualt


推荐