如何扩展Laravel刀片指令@extends?

时间:2019-06-20 09:36:06

标签: php laravel

我正在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项工作正常,但我不想每次都输入配置路径或提供程序名称空间。

我认为我最好的解决方案是为每个模块编写自定义指令@extends@includes@components(这将动态完成)。

您将获得以下指令: @userExtends @userInclude @userComponent

我遇到的最后一个问题是我找不到扩展现有@extends指令的方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

也许这可以使您走上正确的道路: https://laravel.com/docs/5.8/packages#views