Я разрабатываю большую систему в 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
.
Есть предложения?