@symfony_php

Страница 867 из 1418
Sergey
18.04.2018
07:03:23
ну то есть ты можешь себе представить репозиторий БЕЗ зависимостей?

Urmat
18.04.2018
07:03:42
соединение с базой данных это сервис? entity manager это сервис?
Ааа, зачем углубляться в понятия? Важно же решение

Sergey
18.04.2018
07:03:51
в частности чем плохо в коде делать new SomeRepo

Google
Sergey
18.04.2018
07:04:17
ну и вообще в чем ограничения new

Urmat
18.04.2018
07:05:06
в частности чем плохо в коде делать new SomeRepo
Я не говорю, что это плохо. Все от ситуации зависит

ну и вообще в чем ограничения new
Тогда он сможет инжектить зависимости. Разве, что через контейнер тащить. Получится то же самое, что и с сервисом. Только будет лишний код

Sergey
18.04.2018
07:07:11
ну вот чисто теоритически даже (если не брать в расчет in memory репозитории-заглушки какие)

Urmat
18.04.2018
07:08:08
я говорю что это не очень хорошо)
Если у класса нет зависимостей, то тоже нужно создавать через контейнер?)

Sergey
18.04.2018
07:08:25
есть объекты значения, есть сущности и т.д.

Urmat
18.04.2018
07:08:46
it depends.
Я же это и говорю, что от ситуации все зависит

Sergey
18.04.2018
07:08:58
важно только добиться того что бы вызов new был в одном месте. Будь это статический метод-фабрика или еще чего

Я же это и говорю, что от ситуации все зависит
Репозиторий - конкретная ситуация

и разговор был именно об регистрации репозиториев как сервисов

Google
Sergey
18.04.2018
07:09:49
автоматической регистрации

так что еще раз - в случае репозитория у тебя есть хоть один довод почему "можно без контейнера?" Естественно мы рассматриваем ситуацию когда контейнер у тебя уже есть. В ситуациях легаси где у тебя нельзя просто взять и перевести все на контейнер чуть другая история (промежуточные штуки вроде сервис локаторов)

короч я не понимаю почему нет смысла "инджектить в репы".... коннекшен к базе тебе придется заинджектить как-то

а то что ты видимо имел ввиду называется SRP

Urmat
18.04.2018
07:14:34
Я перечитал вопрос, весь диалог и понял, что был не прав

Прошу прощения

Damir
18.04.2018
07:49:37
Что за беда с наследованием в Sonata?

Я про админский контроллер

An exception has been thrown during the rendering of a template ("Unable to find a valid admin for the class: AppBundle\Entity\User, there are too many registered: admin.user, admin.user_moderation"

Shmaltorhbooks
18.04.2018
07:54:13
судя по ошибке - ты сконфигурил две админки для одного класса

admin.user и admin.user_moderation как сконфигурированы?

Roman
18.04.2018
07:58:32
так там надо прописать параметр admin_code и указать какой админкласс юзать

а две админки для одной энтити делать можно, но там есть нюансы

Damir
18.04.2018
08:03:15
Да, одна сущность - два контроллера

Sergey
18.04.2018
08:05:25
Что за беда с наследованием в Sonata?
та же беда что и со всем наследованием)

Damir
18.04.2018
08:07:47
На самом деле задача простая.. У меня есть уже весь нужный функционал в admin.user, а контроллер который наследует admin.user - там просто чутка другой запроса - выводит всех юзеров которые на модерации. в итоге при клике на юзера - ссылка должна вести на базовый контроллер. и всё

Bohdan
18.04.2018
08:11:38
@fes0r вспоминая твои речи про логику в контроллерах имеет ли смысл выносить простые штуки (типа редактирования сущности) в какие-нибудь сервис-менеджеры, которые сами по себе будут на 4-5 строк и будут просто делегировать задачи сущностям и дергать persist/flush?

и да, твой сервис для флашей - он просто содержит один метод?)

Google
Sergey
18.04.2018
08:12:42
ну не, 3 на самом деле)

flush, commit и flushAndCommit

Sergey
18.04.2018
08:13:17
но это потому что у меня и доктрина и пруф фигурировать могут в одной операции. В большинстве случаев должно вызываться только flushAndCommit

commit - транзакции?
не, это UoW от prooph

Bohdan
18.04.2018
08:16:26
а persist там, где он нужен, дергаешь репозиторием?

Вадим
18.04.2018
08:33:29
Привет, как красиво сделать такую штуку. Есть у меня коллекция юзеров /users/<id>/ ну и там операции с каждым, Через что мне красиво сделать /users/me/ что б юзался тот же контролер, но подставлялся ид текущего юзера ?

Елнур
18.04.2018
08:35:33
создать новый роут с path: /users/me и в defaults id: 0

который ссылается на тот же контроллер

и в контроллере проверить, если id == 0, то подставить id текущего юзера

Елнур
18.04.2018
08:36:09
??

Вадим
18.04.2018
08:36:22
хм ... как вариант

Елнур
18.04.2018
08:36:30
да, как вариант

Bohdan
18.04.2018
08:36:34
и важно: этот роут должен находиться выше, чем /users/{userId}

Елнур
18.04.2018
08:39:04
или /users/{userId} - должен быть requirement, что id - только цифры

Google
Вадим
18.04.2018
08:39:06
Я думал как-то в роутинге сервеис цеплять, который это будет делать ... или какой-то контроллер который сделает уже запрос на /users/56/ например. Ну типа middleware

Andrew
18.04.2018
09:08:07
Я думал как-то в роутинге сервеис цеплять, который это будет делать ... или какой-то контроллер который сделает уже запрос на /users/56/ например. Ну типа middleware
а почему нельзя сделать отдельный экшн /users/me и вызывать $this->usersAction($this->getUser()) или делать forward? Ну или вынести в приватную функцию общий код и вызывать из двух мест?

вариантов простых куча

Вадим
18.04.2018
09:09:37
а почему нельзя сделать отдельный экшн /users/me и вызывать $this->usersAction($this->getUser()) или делать forward? Ну или вынести в приватную функцию общий код и вызывать из двух мест?
Потому что там есть GET/POST/PUT/PATCH ... не хотелось дублировать. Вот думал про форвард, но предполагал что есть еще какой-то вариант )

Timur
18.04.2018
09:10:51
Что за беда с наследованием в Sonata?
Разобрался с проблемой?

Вадим
18.04.2018
09:11:00
Именно вот как только что месага была, как у ВК с id0, редирект на текущего бзера ... но что б редирект был на серваке )

Damir
18.04.2018
09:11:08
Admin
ERROR: S client not available

Timur
18.04.2018
09:12:14
Неа..
Пиши в личку или в группу Sonata, я тебе приглашение скинул

Вадим
18.04.2018
09:14:40
это называется forward =) или вызов другой функции
я так думал сделать, но решил спросить чатег, возможно есть еще какие варианты, более красивые )

Andrey
18.04.2018
09:15:45
Спасибо

Igor
18.04.2018
09:25:39
кто знает как правильно мокать сервисы в функциональных тестах в 4 симфе ? раньше можно было this->getContainer()->set('idService', $mock) но теперь это deprecation

Dmitriy
18.04.2018
09:27:57
$this->createMock не работает?

$iD
18.04.2018
09:28:15
oO а так можно было?

Bohdan
18.04.2018
09:28:17
$this->createMock не работает?
не, там ведь не про это речь

или я чего-то не знаю?

Dmitriy
18.04.2018
09:28:25
just include a .yml file in your config_test.yml. Rewrite the needed service definitions by using the same key or using decorator (http://symfony.com/doc/current/service_container/service_decoration.html) in that file.

Google
Bohdan
18.04.2018
09:28:47
я так понял, он хочет, чтобы $this->getContainer()->get('...') возвращало ему мок

$iD
18.04.2018
09:28:56
но это ж пздц?

не?

Bohdan
18.04.2018
09:29:16
ну для тестов может и нет если не брать во внимание использование контроллера :D

$iD
18.04.2018
09:29:21
это было сделано для кейсов когда в сервис инжектится контэйнер? )

Dmitriy
18.04.2018
09:29:27
а речь точно про функциональные? там же просто кравлер хтмла

Shmaltorhbooks
18.04.2018
09:32:04
я так понял, он хочет, чтобы $this->getContainer()->get('...') возвращало ему мок
Второй параметр отвечает же за поведение при отсутствующем сервисе?

Он, вроде, так и называется

Valentin
18.04.2018
09:33:02
Bohdan
18.04.2018
09:33:18
Shmaltorhbooks
18.04.2018
09:34:03
Другой контейнер в тестах?)

Igor
18.04.2018
09:41:21
я так понял, он хочет, чтобы $this->getContainer()->get('...') возвращало ему мок
он хочет чтобы в функциональном тесте заменялся сервис на мок

Igor
18.04.2018
09:42:13
autowiring

Bohdan
18.04.2018
09:45:47
autowiring
https://github.com/symfony/symfony-docs/issues/8203

Igor
18.04.2018
09:47:52
читал эту статью - но грузить отдельный конфиг со всеми моканными сервисами как по мне ту мач. Обратился сюда - думал может кто знает более логичное / элегантное решение

Bohdan
18.04.2018
09:53:28
мне на самом деле тоже не нравится такое

но я не пишу функциональные, потому мне ок)

Andrey
18.04.2018
09:54:10
делаете алиасы на нужные сервисы с пометкой public: true, делаете set для test.* сервисов

Страница 867 из 1418