我正在Laravel 5中构建一个模块化系统,我系统的模块视图不在UIViewController
之内。它们位于/resources/views
。
当我使用/modules/XXXXModule/core/views
时,它不起作用(逻辑上)因为在错误的地方寻找视图。
如何告诉Laravel 5在其他地方(路径)搜索视图?
答案 0 :(得分:2)
在Laravel中为视图添加新路径有两种方法:
<强> 1。使用addLocation
:
view()->addLocation('/modules/XXXXModule/core/views');
view()->addLocation('/modules/YYYYModule/core/views');
以上内容可行,但如果您在每个文件夹中都有list.blade.php
视图,请使用以下内容:
return view('list');
它将始终返回它在首先注册的位置找到的那个,在这种情况下将是XXXXModule
。因此,虽然它有效但它的模块化结构有其缺点。
<强> 2。使用addNamespace
:
view()->addNamespace('XXXXModule', '/modules/XXXXModule/core/views');
view()->addNamespace('YYYYModule', '/modules/YYYYModule/core/views');
上面将在不同的命名空间中注册每个路径,因此如果您有两个具有相同名称的视图文件(即list.blade.php
)但是是两个不同模块的一部分,您可以按如下方式访问它们:
// for XXXXModule
return view('XXXXModule::list');
// for YYYYModule
return view('YYYYModule::list');
这样您就不会再有位置冲突了。