Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从Laravel 4中的备用目录加载视图_Php_Laravel_Laravel 4_Namespaces - Fatal编程技术网

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

Php 如何从Laravel 4中的备用目录加载视图,php,laravel,laravel-4,namespaces,Php,Laravel,Laravel 4,Namespaces,在我的Laravel 4应用程序的根目录中,我有一个文件夹主题。在主题文件夹中,我有默认设置和azure。 如何从特定路径中的此主题/default文件夹访问视图 Route::get('{slug}', function($slug) { // make view from themes/default here }); 我的目录结构: -应用程序 --主题 ---违约 ---蔚蓝 我需要从localhost/laravel/app/themes/default文件夹加载视图。请解释

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

Route::get('{slug}', function($slug) {
    // make view from themes/default here
});
我的目录结构: -应用程序

--主题

---违约

---蔚蓝


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

这在Laravel 4中是完全可能的。您所追求的实际上是视图环境。 您可以注册名称空间提示,也可以注册查找程序将级联的额外位置。看一看

您可以添加如下位置:

View::addLocation('/path/to/your/views');
不过,如果您为它们命名名称空间,可能会更容易一些,以防在将路径追加到数组时出现冲突的文件名,因此它只会级联到找到合适的匹配项为止。命名空间视图使用双冒号语法加载

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

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

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

这里我不是从
公共
文件夹访问我的项目。而不是从项目根本身访问

我看到了一个关于
使用视图替代路径的论坛讨论
。但我对此有点困惑。讨论的解决方案是

您需要添加一个
位置
类似

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');
然后以默认方式调用view

    return View::make('page');

这将从
project\u目录/app/themes/defualt
文件夹中呈现
page.php
page.blade.php
文件。

我为laravel 5开发了一个主题包,其功能如下:

  • 主题文件夹中的视图和资产分离
  • 主题继承:扩展任何主题并创建主题层次结构

在这里试试:

\View::addLocation($directory)
工作正常,但新的正确方法是使用
loadViewsFrom($path,$namespace)
(可在任何服务提供商上使用)。

删除了我的答案,这确实是正确的方法。@Chirag你能用我的视图位置
(主题/默认)
和路由解释一下吗?你必须用code
view::addNamespace添加主题('theme','/path/to/themes/default');
然后将其与代码一起使用
返回视图::make('theme::View.name');
@lucip请检查我更新的问题并给我详细解释,而不是
/path/to/
。这意味着你的路径是:app('path'))“/../themes/default”我很欣赏这篇文章,它有很多有用的信息!你能解释一下View::addLocation()和View::addNamespace()的位置吗是否应该去?我是否假设这需要创建一个服务提供者?这在路由筛选器中不起作用有什么原因吗?我在那里尝试过,但在global.php中不起作用。@pthurmond为什么要将其放入路由筛选器中?这是一个描述完美的答案