Dmitrij
Забей, посижу над докой, может примеры ещё посмотрю . Пока вижу, что дока не соответствует примерам приведённым в ней.
Dmitrij
ну вообщем никчему не привела документация
Dmitrij
Dmitrij
беру как минимум эту часть
Dmitrij
Dmitrij
хотя если через конструктор ТайпХинтю то всё ок
Dmitrij
в чем долбанная магия ?
Anatoliy
Покажи регистрацию этого сервиса в services.yml
Dmitrij
Покажи регистрацию этого сервиса в services.yml
эм... это ж из коробки, я ничего не регистрировал
Dmitrij
иду четко по доке
Dmitrij
https://symfony.com.ua/doc/current/service_container.html
Anatoliy
сек
Dmitrij
я как бы своего ничего не выдумываю, просто беру с доки и набираю код $logger = $this->container->get('logger'); dd($logger);
Dmitrij
и получаю ошибку
Anatoliy
https://symfony.com/doc/current/service_container.html Пользуйся лучше оригинальной докой)
Anatoliy
у тебя logger - это алиас на логер интерфейс
Anatoliy
Если попробуешь у себя вызвать $doctrineRegistry = $this->container->get('doctrine'); вместо логера все будет ок, и можно пользоваться этим сервисом
Dmitrij
а почему тогда, я делаю вот как по доке дальше:
Dmitrij
Dmitrij
и той доке так же есть
Dmitrij
и у меня он так же не работает?
Dmitrij
хотя я обращаюсь к ID
Dmitrij
site_update_manager.superadmin
Dmitrij
ну то есть, ниодно обращение к ID, которое я создаю не работает
Dmitrij
их нужно где то дополнительно регистрировать ?
Anatoliy
их нужно где то дополнительно регистрировать ?
когда ты добавлешь этот блок в services - этим ты его и регистрируешь
Anatoliy
попробуй поставить autowire: true
Anatoliy
точнее вообще из этого блока удали его
Anatoliy
он по дефолту тру
Vadim
Это старая дока. Теперь id сервиса — это FQCN сервиса. Плюс из контейнера ты их достать не можешь, так как все по умолчанию установлено в public: false. Это сделано специально, чтобы ты инжектил сервисы, а не контейнер.
Dmitrij
Привет всем. Мужики, как то можно в контейнер передать массив? В доке нашел, что можно описать в Параметрах массив, но как его потом прокинуть в сервис непонятно, пишу так: parameters: test_setting: test_token: '%token%' services: App\TestCon: public: true arguments: $config: '%test_setting%' и получаю ошибку, что argument "$config" of method "__construct()" is type-hinted "array", you should configure its value explicitly.
Александр
https://symfony.com/doc/current/components/yaml/yaml_format.html
Dmitrij
https://symfony.com/doc/current/components/yaml/yaml_format.html
эм... спасибо, но чет как то тут нет инфо о том, как передать его дальше, как описать я уже нашел, но суть в том, что не подхватывает
Dmitrij
кто то может дать ссылку на гит, как вы работаете с контейнерами? или никто особо не заморачивается с ними ?
Vadim
Да боже, иди дебажь
Vadim
Сколько можно, там забанили, сюда пришёл
Dmitrij
где забанили?
Dmitrij
меня не банили пока еще нигде
Vadim
где забанили?
В гугле, очевидно
Dmitrij
в гугле висят эти же вопросы на стековерфлоу, и ответа не них нет
Vadim
Если тебе неинтересно решить проблему самому, программирование не твоё.
Dmitrij
подсказал бы по теме, был бы вообще красавчик
Vadim
Ты в этой теме не шаришь, чтобы тебе подсказывать. Сто раз кидали доку и ты до сих пор не умудрился решить свою проблему. Там все очень просто, в доке предельно ясно написано.
Vadim
Ты не читаешь доку, а бежишь сразу к примерам, чтобы скопировать. Такой подход в ларке, может быть, работал, тут нет
Dmitrij
ну я пока сделал вывод, что никто не упарывался в контейнер симфы, ибо в доке все поверхностно и с ошибками описано. Я свою проблему решил от части, но мне не нравится такое решение, потому пытаюсь сделать хорошо. А вопросы задаю такого плана на которые на нашел вменяемых ответов ни в доке ни в гугле.
Александр
еще раз
Александр
https://symfony.com/doc/current/components/yaml/yaml_format.html#collections
Александр
и посмотри как у тебя параметры оформлены
Dmitrij
и посмотри как у тебя параметры оформлены
смотри, когда я в контроллере обращаюсь к параметрам: $this->getParameter('test_setting'); то я получаю нужный результат, массив который задал. Что у меня не так с оформлением, что его сервис не подхватывает ?
Dmitrij
Александр
покажи конструктор
Александр
потому чтоя воспроизвел и все норм вывелось
Dmitrij
Dmitrij
трабл возникает именно с массивом
Dmitrij
ну то есть, если не на тестовых данных, то у меня такая картина:
Dmitrij
Dmitrij
Dmitrij
и конструктор, который выше скинул
Dmitrij
и когда пытаюсь автовайрить App\Infrastructure\BotMan\BotMan, то получаю ошибку
Dmitrij
Cannot resolve argument $botman of "App\Controller\TestController::index()": Cannot autowire service "App\Infrastructure\Botman\Botman": argument "$telegramConfig" of method "__construct()" is type-hinted "array", you should configure its value explicitly.
Vadim
Ты знаешь, зачем нужен public: true?
Dmitrij
Ты знаешь, зачем нужен public: true?
На сколько я разобрался, то для доступа к сервису из вне файла service.yaml
Vadim
На сколько я разобрался, то для доступа к сервису из вне файла service.yaml
Полагаю, все остальное ты так же понял, и как это. public: true - это разрешает тебе доставать твои сервисы из $container->get(), а не "для доступа к сервису из вне файла". Если бы ты не мог доставать сервисы, то зачем они нужны.
Vadim
а разве я не так написал? или $container->get() это использование сервиса внутри service.yaml ?
Нет, не так. Сервис не будет доступен ТОЛЬКО из контейнера напрямую, но его можно и нужно инжектить.
Alexander
Разве $container->get() где то еще используется, думал после 4-ки отошел в мир иной этот метод с практики.
Alexander
Парень вроде 4-5 использует. О старых версиях понятное дело)
Кирилл
ды лан, вон недавно global $container даже было)
Гречушников
у меня то
Гречушников
)
Гречушников
у меня нет автовайринга
Кирилл
дык в описании сервиса можно написать arguments: - "@service_container"
Кирилл
при чем тут автовайринг
Dmitrij
неужели никто не заморачивался с прокидыванием массива?
Кирилл
да блин работает прокидывание массива. прокидывание всего работает.
Maks
https://symfonycasts.com/screencast/symfony-fundamentals/create-service
Dmitrij
https://symfonycasts.com/screencast/symfony-bundle/override-service
чет на костыль похоже, или это норм практика ?