Anton
Потому что уже был реализован паттерн и его переписывать никто не будет
Anton
я давно понял что ты предлагаешь и несколько раз сказал что так не получится
Dmitry
FileViewFinder - это ж твой класс?
Anton
Нет
Anton
Это класс ларавеля
Dmitry
нет
Dmitry
return new \App\Services\View\FileViewFinder
Anton
который ищет где лежат габлоны
Anton
class FileViewFinder extends \Illuminate\View\FileViewFinder
Anton
мой сделан только для того чтобы можно было написать правила поиска для партнеров
Dmitry
мой сделан только для того чтобы можно было написать правила поиска для партнеров
не знаю правильно ли понял твою реализацию, но судя по всему тебе надо подменять инстанс файндера, и добавлять туда только папку 1 нужного партнера
Anton
Именно это я и делаю!
Anton
но не подменять
Anton
а биндить свой
Anton
можно сразу его забиндить
Anton
но надо в какой-то момент пересетать партнера
Anton
и вот тут не получается
Anton
то что в глубине Mail::send используется оказывается новым инстансом
Dmitry
просто не понятно как ты его вообще задаешь
Dmitry
если шаблон у тебя по одинаковому называется
Anton
значешь что такое биндинг?
Anton
как можно свой шаблонизатор забиндить в ларавеле или какой другой объект?
Dmitry
я то понимаю, я не поинмаю как он у тебя ищет файл в разных папках, причем надоходит нужный
Dmitry
хотя название одинаковое
Anton
он у меня не ищет
Anton
он у меня только добавляет папки в которых можно искать
Anton
ищет - штатный
Dmitry
они же из конфига берутся?
Dmitry
и сразу все?
Anton
они же из конфига берутся?
они беруться из конфига партнера, который уже создается динамически
Dmitry
ммм... вот теперь понятно в чем твоя проблема :)
Anton
ну же?
Dmitry
ты на старте приложения уже жестко привязан к какому то партнеру, так?
Anton
Нет
Dmitry
ну как нет? а это ты где биндишь? $this->app->bind('view.finder', function ($app) { $paths = $app['config']['view.paths']; return new \App\Services\View\FileViewFinder($app['files'], $paths); });
Anton
А где ты там партнера видишь?
Dmitry
$app['config']['view.paths'];
Anton
Это не партнерская настройка
Anton
это глобальная
Anton
как будто их нет
Anton
там лежат ВСЕ шаблоны
Dmitry
т.е. это шаблоны всех партнеров?
Anton
нет
Anton
вообще ВСЕ шаблоны
Anton
Есть шаблоны что не приналдлежат партнерам
Anton
забей
Anton
я уже понял что объяснять мне намного дороже чем дебажить
Dmitry
судя по всему, там много именно на твоем коде завязано
Anton
Нет
Anton
просто не понятно как подменить налету view.finder
Anton
вот основной вопрос
Dmitry
никак
Anton
вообще не факт
Dmitry
потому что он часть View
Anton
ну или если не подменить, то поменять значения в нем
Dmitry
и добавляется через контруктор, т.е. он уже существует как зависимость объекта
Dmitry
в тот момент когда ты хочешь подменить
Dmitry
ну или если не подменить, то поменять значения в нем
вот тут, после старта его подменять уже нет смысла https://c2n.me/3Rs2hWP
Dmitry
но там есть setFinder судя по всему :)
Anton
Это объект? - да, у объекта в рантайме можно менять аттрибуты? - да
Anton
как поменять аррибут finder?
Anton
app('view.finder')->setPartner($Partner); - делаю вот так
Anton
но уже глубже в исполнении этого ничего нет
Anton
Окей
Anton
не у всех, это скорее как исключение
нет это скорее всего так
Dmitry
но уже глубже в исполнении этого ничего нет
по сути тебе надо app('view')->setFinder();
Anton
это мой объект и у него есть функция - setPartner
Anton
по сути тебе надо app('view')->setFinder();
не уверен что мне нужно это, но попробую
Dmitry
это мой объект и у него есть функция - setPartner
была где то статейка о том что сеттеры это зло, найду скину
Anton
как-то круто - заменять целиком фаиндер, а не менять свойство ему, которое уже и так есть
Anton
Я понимаю в каких случаях они зло
Anton
все
Anton
я уже понял
Anton
можно закрыть дискуссию
Dmitry
как-то круто - заменять целиком фаиндер, а не менять свойство ему, которое уже и так есть
ну можно конечно и через app('view')->getFinder() достучаться, но ты наверное и сам уже понял
Anton
Я то достучусь, но не будет ли там такой же фигни как и с app('view.finder')->setPartner($Partner);
Anton
что отчего-то там уже совсем другой объект
Dmitry
после того как приложение стартануло изменение app('view.finder') уже ни на что не повлияет