Нужно добавить функцию (обратную directive, ДЕрегистрации) в BladeCompiler. Не могу понять, как расширить Blade.
Пример моей проблемы:
Регистрирую например директиву @newsFull, на момент рендеринга модуля news, после того как рендеринг модуля прошел, убрать эту директиву, чтоб нельзя было вызвать в другом месте, где она уже не нужна.
Все бы норм, но модулей десяток пока, и уже хочется отказать от приставок news в директиве, так как в большинстве модулей есть такая директива как name, и чтоб не писать в коде шаблонов модулей @newsName, @photoName, @photoGalleryName, @blaBlaBlaName, а просто @name, нужно этот @name регистрировать для каждого модуля свой (так как реализация @name может разливаться).
Регистрирую например директиву @newsFull, на момент рендеринга модуля news, после того как рендеринг модуля прошел, убрать эту директиву, чтоб нельзя было вызвать в другом месте, где она уже не нужна.
Все бы норм, но модулей десяток пока, и уже хочется отказать от приставок news в директиве, так как в большинстве модулей есть такая директива как name, и чтоб не писать в коде шаблонов модулей @newsName, @photoName, @photoGalleryName, @blaBlaBlaName, а просто @name, нужно этот @name регистрировать для каждого модуля свой (так как реализация @name может разливаться).
terehinis: я почти уверен, что что-то вы делаете не так. Директивы в принципе не задуманы, как средство для вставки кусков кода в шаблон, только разве что для каких-то совсем общих случаев типа вставки атрибута времени в тег time. То есть как бы вы теперь ни поступили - вы будете делать адский костыль. Если, конечно, не измените подход.
"Модулем", я так понимаю, вы обозвали blade-файл?
Тимофей: Модуль состоит из компонента модуля, своих моделей, класса обработки параметров вызова. Шаблонов вывода каждого модуля несколько. Мы переписываем существующую достаточно большую систему по созданию типовых сайтов. И для удобства своих контент менеджеров решили использовать директивы, чтоб не писать им {{$item->name}} (в простом примере), как понимаете, конструкции бывают значительно сложнее. Мы понимаем, что директивы изначально - это глобальный помощник. Мы же решили использовать их для облегчения работы контент менеджерам (которые сидят рядом), которым иногда приходится добавлять новые шаблоны и как следствие шаблон компонентов для них нужно делать. Смотреть на директивы удобнее, это без спорно, чтобы не придумывать свои велосипеды, очень удобно взять директивы. Но для большего удобства я уже описал, что нам требуется сделать. И вопрос больше не к подходу, а к тому, как расширить, а точнее как зарегистрировать класс который будет наследовать BladeCompiler.
terehinis: Вообще, если используете Laravel 5.4, то там есть т.н. компоненты. Возможно, они спасут ситуацию - в них можно будет инкапсулировать всю логику, о которой вы говорите, и выводить разный контент в зависимости от внешних условий.
Но я вам точно говорю: директивы - это не путь. Остановитесь, пока не поздно, иначе потом намучаетесь с этим. Как я и сказал, директивы в Blade призваны решать абсолютно другой ряд задач, не нужно пытаться забить гвоздь отвёрткой. Вы, конечно, его забьёте, но сколько усилий для этого понадобится :)
Касаемо замены стандартных классов, в частности BladeCompiler:
в AppServiceProvider (ну или в любом другом провайдере, можно отдельный под это создать) заменяете через $this->app->singleton/bind/... старую зависимость на новую (вот как это сделано в Illuminate\View\ViewServiceProvider: joxi.ru/L21d0N1CXGexmX ).
Но я снова призываю так не делать в вашем случае :)