• Где описан api symfony?

    prototype_denis
    @prototype_denis
    Раньше был "проект" на sami и был он тут api.symfony.com , но сейчас редирект на гитхаб.
    Написано
  • Как передать объект с параметром в Service Container?

    prototype_denis
    @prototype_denis
    xjasmx, уже совместим

    Если нужно разные параметры для каждого гранта, вы регистрирует соответствующее количество сервисов DateInterval?


    Всё в ваших руках, хоть через объявление сервисов, хоть через фабрики.
    Написано
  • Как правильно аутентифицировать пользователя после регистрации?

    prototype_denis
    @prototype_denis
    fman2 токен в стораж и выкидываете событие (аналог username password формы)

    // Или любая другая реализация TokenInterface для вашего случая
    $token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
    // Аутентификация менеджером излишняя, просто сохраняем токен
    $tokenStorage->setToken($token);
    // Выкидываем событие программной аутентификации, все слушатали онного сами разберутся что делать дальше
    $event = new InteractiveLoginEvent($request, $token);
    $eventDispatcher->dispatch('security.interactive_login', $event);


    main - замените на ключ вашего фаервала

    security.interactive_login замените на константу

    Реализация с проверкой юзверя и поддержкой "запоминания"

    ...и ещё тонну вариантов для каждой реализации.

    В FOSUser есть поддержка ремембер - она учитывается в программной аутентификации, юзается UserChecker и он используется.

    А у вас что? Может у вас авто регистрация из социалок, по ссылке на почте, через приложение, через форму, через двухфакторную пре аутентификацию на регистрацию (и такое бывает), единый вход через идентити сервис, через [подставить нужное]... Я к тому, что в каждом конкретном случае программная аутентификация будет разной и она будет учитывать контекст.

    Сделайте минимально работающее решение и прекратите искать костыли.
    Написано
  • Как правильно аутентифицировать пользователя после регистрации?

    prototype_denis
    @prototype_denis
    fman2, Кейс. Аутентифциированный юзверь может регистрировать других юзверей. В этом случае будете задавать вопрос о том, как "отучить" фрейм аутентифицировать автоматически?

    Аутентифицировать юзверя после регистрации это частный, хоть и частый кейс.
    И то, место где необходимо выкидывать событие на которое вам необходимо повеститься зависит от миллиона вариаций реализаций регистраций.

    Что такое вообще регистрация, чем она отличается от любой другой банальной формы создания какой-либо сущности? Да ничем...

    Соответственно аутентификацию необходимо проводить программно.
    Написано
  • Как контролировать статус выполнения консольной команды в Symfony?

    prototype_denis
    @prototype_denis
    База, редиска, мемкэш, кролик, файловая система, юникс сокеты, tcp сокеты... Пишите из команды её состояние куда угодно, а из контроллеров забирайте оттуда, куда пишется состояние.

    Из fpm в процесс запущенный в cli...

    Используйте "внешне хранилище" в общем.
    Написано
  • Как обновить сессию пользователя при смене роли в Symfony?

    prototype_denis
    @prototype_denis
    Решение найдено - и это хорошо :)

    ЗЫ

    Возможны вы путаете с методом getUser в провайдере, где необязательно загружать данные из стоража, если пользователь существует в сессии - в этом случае remember me вам попортит жизнь, да.

    Сам же чекер не привязан ни к какому аутентификатору.

    https://github.com/symfony/symfony/blob/4.4/src/Sy...

    Решается имплементацией метода isEqualTo https://github.com/symfony/symfony/blob/4.4/src/Sy... в котором (если вы нигде в коде динамически не форсите роли юзверю) нужно реализовать просто сравнение ролей. Это позволит провайдеру обновлять пользователя из стоража.

    Серебрянной пули, к сожалению не существует, что бы решить данную проблему в Symfony
    Написано
  • Как правильно будет?

    prototype_denis
    @prototype_denis
    Елена, руководствуйтесь здравым смыслом - это лучшее решение.

    Ответ кроется в вопросе:

    Понятно, что всё связанное с {name} - ... храним в папке {folder}

    Очевидно? Да! Так и положите свои модели в папку Model :)

    Не заморачивайтесь так сильно. Делайте проще и всё будет очевидно и другому человеку.

    Ну например у меня есть с десяток http адаптеров, для работы с сетью, где вы их будете искать в моей библиотеки, если вам нужно будет использовать psr или symfony http client? Где-то в HTTP/Adapter/... верно же? Так и задайте этот же вопрос себе, где бы вы искали код, связанный с определённым функционалом.
    Написано
  • Как сохранить данные из другой сущности?

    prototype_denis
    @prototype_denis
    Максим Лагойский, Многие к одному и многие ко многим в "понятии форм" - это коллекции (CollectionType). Связующая сущность между двумя таблицами вам не нужна (не без исключений конечно же). Оперируйте двумя объектами, пользователем и проектом. У вас отношение многие к одному, то есть у одного пользователя может быть несколько проектов и это значит, что в самом тривиальном случае у вас форма должна "обратная", селект должен быть с пользователями, а не с проектами. (Проектов много, пользователь один - выбираем пользователя).

    Почитайте документацию на доктрину, у вас лишняя сущность и лишняя колонка в таблице user_projects
    Написано
  • Как получить доступ к значению дополнительного поля entity в форме?

    prototype_denis
    @prototype_denis
    $choiceValue - это и есть ваш объект Colors.

    ['style' => \sprintf('.... %s', $choiceValue->getHex())]
    Написано
  • Как вложить тег в поле формы symfony form?

    prototype_denis
    @prototype_denis
    AlpineMilk, где вам удобнее, хоть в этом файле, хоть в подключаемой, хоть глобально
  • Почему не работает сервис в Symfony 4.2?

    prototype_denis
    @prototype_denis
    Kafkiansky,


    # add more service definitions when explicit configuration is needed
    # please note that last definitions always *replace* previous ones


    Переместите определение сервиса ниже.
  • Почему не работает сервис в Symfony 4.2?

    prototype_denis
    @prototype_denis
    Для биндинга (а в 4.2 как агрумент) нужен включенный autowire,возможно он у вас по умолчанию в false.
  • Почему не работает сервис в Symfony 4.2?

    prototype_denis
    @prototype_denis
    Kafkiansky, https://symfony.com/doc/current/service_container....

    namespace App\Service {
        class FileUploader
        {
            public function __construct(string $directory) {}
        }
    }


    services:
        App\Service\FileUploader:
            autowire: true
            bind:
                $directory: 'uploads/posts'


    Не может не работать.
  • Почему в Symfony 3.4 через cli маппятся связи, а через web нет?

    prototype_denis
    @prototype_denis
    konchober, действительно так печально?

    Как пример: https://github.com/Smart-Core/AcceleratorCacheBundle

    (По ссылке выше как более верный вариант повеститься на событие cache clearer и убивать его там, на warmup соответственно обратное действие)

    Из консольки можно дёрнуть веб морду, которая собственно и дропнет кэш.

    Аналог и пример - api platform где газликом стучаться на закрытый роут для сброса, правда не apcu, а http кэша.

    Я предполагаю, что проблемку всё-таки можно решить не перезагружая fpm
  • Где symfony DI собирает все зависимости?

    prototype_denis
    @prototype_denis
    dllweb, в методе get контейнера он будет бызываться, когда он понадобится в вашем коде. Зависимости разрешаются на этапе компиляции контейнера.

    Возьмите, создайте какой-нибудь сервис с аргуметом несуществуещего класса и посмотрите стэк трейс, потому что я уже не знаю, как вам объяснить то, как работает symfony компонент или задайте вопрос по другому.

    В каком месте? Я привел вам ссылку на это место - вам оно не подходит.

    Вы либо пытаетесь решить какую-то конкретную проблему этим абстрактным описанием в вопросе, либо неверно интерпретируете ответы на вопрос.

    У вас symfony орёт на что-то? На циркулярную зависимость, на несуществующий класс, на аргументы, которые она не может угадать? В чем конкретная проблема?
  • Где symfony DI собирает все зависимости?

    prototype_denis
    @prototype_denis
    > Каким образом можно пробросить зависимость внутрь класса A?

    Ещё раз...

    На этапе конфигурирования контейнера собирается конфигурация для контейнера.

    В данном случае отработает \Symfony\Component\DependencyInjection\Compiler\AutowirePass который на выходе отдаст массив аргументов.

    Далее, на этапе компиляции, (в dev оружении) будет создан файл с названием getAService.php, содержиое которого будет примерно следующим

    return new \A($this->services['b'] ?? $this->services['b'] = new \B());


    Формированием данного кода занимается компилятор, который преобразует агрументы в последующем выполняемый код.

    Если даже класса B не будет существовать, то AutowirePass на выходе отдаст

    throw new RuntimeException('Cannot autowire service "\\A": argument "$b" of method "__construct()" has type "\\Bar" but this class was not found.');


    $container->compile();

    (Если без компиляции, без дампа в файловую систему - то инстансы будут доставаться напрямую из Definition - из описания сервисов) в методе get контенера.

    Вот эта строка и создаёт инстанс вашего сервиса https://github.com/symfony/symfony/blob/master/src...
  • Как вставить строки в таблицу order?

    prototype_denis
    @prototype_denis
    Александр Владимирович, импорт необходимо сделать один раз, для генерации сущностей. Это инструмент генерации кода, который используется как помощник в создании php кода.
  • Как правильно использовать EntityType в Symfony4?

    prototype_denis
    @prototype_denis
    Почему не связь один к одному или многие к одному?

    В конкретном случае добавьте в форму трансформер, для ковертации объекта в int
  • Как установить translation domain для кастомных ошибок у валидаторов форм?

    prototype_denis
    @prototype_denis
    Max Voronov,

    $builder
                ->add('login', TextType::class, [
                    'label' => 'registration.details.label.login',
                    'constraints' => [
                        new NotBlank(['groups' => ['foo'], 'message' => 'registration.details.error.login.required.foo']),
                        new NotBlank(['groups' => ['bar'], 'message' => 'registration.details.error.login.required.bar']),
                    ],
                ])
                ...


    но при этом раздуваются entity

    Тут уже нужно искать компромисс. Конфигурацию можно хранить и в yaml в папочке конфига.