【发布时间】:2019-11-03 02:27:14
【问题描述】:
我正在 Laravel 中开发一个大型系统。这个想法是创建模块并将它们添加到自己的存储库中。我想让它尽可能通用。
问题在于 laravel 的(视图)命名空间。我想让包的用户能够更改视图的路径以及他是否想要视图的命名空间(赋予它使用功能但使用自定义视图的能力)。
这会导致刀片指令 @extends、@include 和 @component 出现问题。
无法通用使用视图命名空间。
必须像这样在每个刀片中将命名空间放在首位:
@extends('user::layouts.web')
会出现永远无法从配置文件中更改命名空间的问题。
我尝试过的其他事情是为命名空间使用常量和配置。
@extends(App\Providers\UserServiceProvider::MODULE_SLUG.'::layouts.web')
@extends(config('user.module.viewNamespace') . '::layouts.web')
这 2 个工作,但我不想每次都输入配置路径或 Provider 命名空间。
我认为我最好的解决方案是为每个模块编写自定义指令 @extends、@includes 和 @components(这将动态完成)。
你会得到以下指令:
@userExtends
@userInclude
@userComponent
我遇到的最后一个问题是我找不到扩展现有@extends 指令的方法。
有什么建议吗?
【问题讨论】:
-
你不能用
@extends("{{ module_namespace }}::layouts.web")吗? -
你会在哪里设置这个 $moduleNamespace 变量?使用视图作曲家?