Anonymous
Начал изучать symfony . Не могу понять что значит -q в команде: php bin/console doctrine:generate:entity --entity=AppBundle:Category --fields="name:string(127)" -q
Кирилл
Ну так хелп же есть.
Alexander
Уже бы sf4 изучать
Andrew
@symfony_php
Andrew
Сьедят
Anonymous
Что такое провайдер? Можно для чего угодно его юзать или только для пользователей?
.fry
Тоже самое, что и интернет провайдер
Anonymous
fosuserbundle на sf4 юзает, кто ? норм, все?
Alexander
Да, все ок
Anonymous
спс
Alexander
https://vfac.fr/blog/how-install-fosuserbundle-with-symfony-4 Были какие-то трудности, но по этой статьи уже раза 4 ставил, все ок.
Anonymous
ясно, по дефолтной можно ставить...
Anonymous
а бутсрап кто-нибудь юзает в своих больших проектах ?
Anonymous
просто, я как бы всегда был им противником его
Alexander
Ставил вместе с symfony encore, немного мучений и все ок. Когда нужно быстро - он поможет, но когда есть время - в топку)
Anonymous
👍
Anonymous
$request->server > Symfony\Component\HttpFoundation\ServerBag::__set_state(array( 'parameters' => array ( 'REDIRECT_STATUS' => '200', 'HTTP_HOST' => 'localhost', 'HTTP_CONNECTION' => 'keep-alive', 'HTTP_UPGRADE_INSECURE_REQUESTS' => '1', 'HTTP_USER_AGENT' => 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/70.0.3538.102 Chrome/70.0.3538.102 Safari/537.36', 'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'HTTP_REFERER' => 'http://localhost/mibew/operator/button-code', 'HTTP_ACCEPT_ENCODING' => 'gzip, deflate, br', 'HTTP_ACCEPT_LANGUAGE' => 'ru,en-US;q=0.9,en;q=0.8', 'HTTP_COOKIE' => 'MibewSessionID=m5qoqpdhjkvce49lan6hl5ejc5; mibew_locale=ru; MIBEW_UserID=5b5b0c021d1ca5.01775795; mibew_locale=ru; mibew_operator=YWRtaW4AJDJ5JDA4JDZHQWo4TGRMZE9SMVdJY0NHYy5Ua3VTNmVnYkV5M0I0bXZhSDBHaElSWm5CRHBrenZMa1Vx; _ga=GA1.1.276419656.1533543826; __utma=111872281.276419656.1533543826.1534238903.1534238903.1; __utmz=111872281.1534238903.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _ym_uid=1535714663283699473; _ym_d=1535714663; uid=89413; pass=e39c8a7964672d8e8624ac812855b984; mda_exp=10.351046986450886; PHPSESSID=u7b375ubh7ngmrnqodrbq6o4s1', 'PATH' => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'SERVER_SIGNATURE' => ' нужно достать HTTP_REFERER , но $request->server->parameters выдает ошибку, почему?
Anonymous
или нельзя отсюда достать
Anonymous
так работает) $request->headers->get('referer');
Anonymous
но не понимаю почему. что это за структура __set_state(array( 'parameters' =>
Anonymous
@al_web будет жить. Поприветствуем!
Dmitry
так работает) $request->headers->get('referer');
$request->headers->get('referer'); Так и можно получить, ведь ты из реквеста данные получаешь
Dmitry
https://symfony.com/doc/current/introduction/http_fundamentals.html#symfony-request-object
Anton
привет всем. вопрос от нуба: куда в symfony писать функции-хелперы. например для uasort($array, 'some_compare_function')?
Anton
или создавать отдельный класс со статическими методами и писать его в /src?
Anonymous
помогите, опять не пойму с этими гетерами public function updateAction(Request $request) { $processor = ThreadProcessor::getInstance(); $processor->setRouter($this->getRouter()); $processor->setAuthenticationManager($this->getAuthenticationManager()); $processor->setMailerFactory($this->getMailerFactory()); $processor->setAssetManager($this->getAssetManager()); $res = $processor->handleRequest($request); echo '<pre>DUMMP:.'.var_export($res->headers,true).'</pre>';die; ошибку выдает, мне надо вообще-то content модифицировать , но вообще ничего получить не могу
Vadim
Какая ошибка?
Dmitry
Это раз
Dmitry
Второе - чтобы сохранить - тебе надо вызвать Ентити менеджер и сделать $em->persist($processor); $em->flush();
Dmitry
Читай в сторону работы с энтити менеджером и базовую доку доктрины
Anonymous
atom, как идешку для сф кто нибудь юзает ?
Anton 🐻
но зачем?
Anonymous
@maximanokhin будет жить. Поприветствуем!
Anton
привет. подтолкните в правильную сторону. есть Entity, в нем свойство remoteUrl. нужно перед сохранением Entity по событию скачать файл себе и сохранить в определенную директорию. путь записан в конфиге, но из Entity конфиги не видны. Что можно придумать? делать отдельный EventListener и забыть про @ORM\HasLifecycleCallbacks?
Artem
обязательно перед сохранением Entity файл скачивать? если нет, то можно в EventListener получать url и пушить его в очередь, а какой-нибудь отдельный процесс/worker/cron-скрипт будет ее разгребать и скачивать файлы. Если скачивать обязательно перед сохранением entity, то можно в том же EventListener'е сначала пинговать url (например делать HEAD-запрос) и если все ок, то сохранять Entity и дальше все тоже самое с очередью
Artem
можно и синхронно, но чревато проблемами, если источник файла недоступен или медленно отдает контент, или файл большой, или ... много чего еще может быть))
Anton
не хотелось делать отдельный EventListener под одну конкретную Entity а решить все на месте простым LifecycleCallbacks. с очередями я еще не разбирался, первую неделю в symfony ) но идею понял.
Artem
ну можно и LifecycleCallbacks обойтись, но основная суть в том, что такие труднопредсказуемые процессы как скачивание файла с левого сервера, лучше не делать синхронно. очереди тут как раз хорошо подходят
Кирилл
либо можете добавить в сущность флажок "Скачать файл" и потом отдельно ходить по сущностям и подкачивать им файлы.
Anton
с асинхроном понял и согласен, но в познавательных целях: а как я могу из каллбэка дотянуться до конфига чтоб узнать путь куда файл сохранять?
Anton
Entity принципиально не должен ни с чем кроме своих свойств уметь работать (и со связанными моделями), как я понял
Anton
то есть делать какое-то отдельное свойство и из контроллера не забывать его заполнять перед сохранением модели?
Artem
по-разному можно. можно добавить поле вроде $file_downloaded = 0; а тот скрипт, что скачивает файлы, потом ставит значение в 1, если файл успешно скачался. можно вместо 1 и 0 хранить там null или дату сохранения файла. если null - значить нужно скачать, если какая-то дата - файл уже был скачан
Anton
не, вопрос не в этом. ладно, в принципе тупой вопрос, согласен. буду думать.
Anton
ок, а другой вопрос по FormBuilder. делаю свою форму $formFactory->create(myFormType::class, $myEntity). могу я из myFormType::buildForm() или myFormType::configureOptions() увидеть свою $myEntity? например, чтоб сделать $builder->add('type', FormType::class, ['help' => 'some specific help for type']) ?
Dmitry
$myEntityData = $builder->getData();
Dmitry
Но только на твоем примере не совсем ясно зачем тебе так делать
Dmitry
Если я тебя правильно понял, тебе нужен EntityType
Anton
ага, спасибо, getData() - это оно. а не получалось у меня потому что искал её во вложенной форме, которая инициализируется уже геттером этой сущности (в ConfigType вижу, а в ConfigCategoryType - нет)
Anonymous
@alex_bender будет жить. Поприветствуем!
Alex
День добрый. Кто то пожет подсказать по api-platform? есть сущность, у которой есть владелец (user). Как мне показывать юзеру только то, что принадлежит ему, т.е. те записи, которые он создал?
Сергій 🍉
определи дата провайдер для конкретного екшена
Alex
спасибо за направление. буду копать )
Anonymous
Наталья Мамедова будет жить. Поприветствуем!
Anonymous
@avicber будет жить. Поприветствуем!
Dmitriy
https://m.habr.com/ru/post/116834/ актуальна ли статья для sf 4? Есть ли похожая для sf4?
Сергій 🍉
ничего не изменилось, кроме того, что бандла может не быть
artem
ничего не изменилось, кроме того, что бандла может не быть
Я помню почти год назад хотел установить пагинейшн бандл и немного расстроился
Сергій 🍉
почему?
Dmitriy
Поток сознания: ServiceLocatorCleaners, он принемает в конструкторе Transformer который дикорируем и ассоциативный массив CleanStrategies объектов которые соответвующего интерфейса. CleanStrategies должен по тегам собрать и прокинуть в ServiceLocatorCleaners вторым аргументом - это делаем в тот момент когда компилиться конфиг Билдим как-то так: $definition = $container->findDefinition('service_locator_cleaners'); $tagged = $container->findTaggedServiceIds('clean_strategies'); $services = []; foreach ($tagged as $cleaner => $tags) { $name = end(explode('.', $cleaner)); $services[$name] = new Reference($cleaner); } $definition->addArgument($services); И тут я завис: как именно вторым аргументом прокинуть массив?
Сергій 🍉
setArgument
Сергій 🍉
но в подобных случаях я использую метод колл
Сергій 🍉
в цикле
Сергій 🍉
и откуда взялась переменная $sanitizer?
Сергій 🍉
да, заодно типизируешь аргумент
Dmitriy
но в подобных случаях я использую метод колл
вот это не понял, что за метод колл?
Anonymous
Vitalii Onanko будет жить. Поприветствуем!
Сергій 🍉
addMethodCall
Vitalii
здравствуйте, коллеги. Не сталкивались ли вы с такой ситуацией, когда нужно чтобы какой-либо контроллер компилировался как сервис с аргументами, зависящими от каких-либо условий? В моем случае - это вхождение некоторой подстроки в имени роута.
Vitalii
грубо говоря, у меня есть один контроллер, в котором юзается репозиторий для некоторого типа сущности. Так вот я хочу, чтобы этот контроллер мог в зависимости от некоторых условий в запросе использовать репозиторий для другой сущности.
Vitalii
буду благодарен за какую-нибудь наводку в этом направлении
Сергій 🍉
контейнер со всеми сервисами собирается гораздо раньше реквеста, поэтому либо инжекти оба репозитория, либо делай стратегию.