Igor
Так, это исправил)
Igor
теперь другой вопрос, как роли добавлять в группы?
Kostiantyn
Приветствую! Уважаемые знатоки, вопрос от телезрителя из Одессы. С Symfony знаком "без года - неделю". Есть некое приложение на Symfony 2.8 которое нуждается в конфигурации некоторых бандлов и сервисов "на лету" (мультидоменное приложение, и конфигурация должна подтягиваться в зависимости от домена, на котором оно запущено) так же нужно избежать кэширования всего, что связано с этой конфигурацией. Как я это вижу: создать сервис который управляет некоторыми настройками и возвращает их по вызову некоторого метода. и это отчасти работает, когда я хочу эти настройки передать в другой сервис, в конфигурации services: .... app.service.myConfigService: class AppBundle\Services\MyConfigService sayNameService: class AppBundle\Services\SayNameService name: "@=service('app.service.myConfigService').getName()" .... тут это срабатывает, в name передается значение возвращаемое вызовом метода getName() моего сервиса. Однако когда пытаюсь конфигурировать Бандлы, то это не прокатывает (бандлы нужно конфигурировать разные, поэтому " а что если сделать такой-то костыль для twig" не прокатит) .... twig: globals: name: "@app.service.myConfigService.getName()" #name: "@=service('app.service.myConfigService').getName()" такой вариант тоже не работает .... ServiceNotFoundException in CheckExceptionOnInvalidReferenceBehaviorPass.php line 58:The service "twig" has a dependency on a non-existent service "=service('app.service.myConfigService').getname()". Вероятно сервис в этот момент еще не существует. Внимание, вопрос: Каким образом добиться конфигурации разных бандлов "на лету" через сервис.
Andrew
Приветствую! Уважаемые знатоки, вопрос от телезрителя из Одессы. С Symfony знаком "без года - неделю". Есть некое приложение на Symfony 2.8 которое нуждается в конфигурации некоторых бандлов и сервисов "на лету" (мультидоменное приложение, и конфигурация должна подтягиваться в зависимости от домена, на котором оно запущено) так же нужно избежать кэширования всего, что связано с этой конфигурацией. Как я это вижу: создать сервис который управляет некоторыми настройками и возвращает их по вызову некоторого метода. и это отчасти работает, когда я хочу эти настройки передать в другой сервис, в конфигурации services: .... app.service.myConfigService: class AppBundle\Services\MyConfigService sayNameService: class AppBundle\Services\SayNameService name: "@=service('app.service.myConfigService').getName()" .... тут это срабатывает, в name передается значение возвращаемое вызовом метода getName() моего сервиса. Однако когда пытаюсь конфигурировать Бандлы, то это не прокатывает (бандлы нужно конфигурировать разные, поэтому " а что если сделать такой-то костыль для twig" не прокатит) .... twig: globals: name: "@app.service.myConfigService.getName()" #name: "@=service('app.service.myConfigService').getName()" такой вариант тоже не работает .... ServiceNotFoundException in CheckExceptionOnInvalidReferenceBehaviorPass.php line 58:The service "twig" has a dependency on a non-existent service "=service('app.service.myConfigService').getname()". Вероятно сервис в этот момент еще не существует. Внимание, вопрос: Каким образом добиться конфигурации разных бандлов "на лету" через сервис.
Двухходовочка. 1) В конфигурации бандлов использовать параметры: twig: globals: name: "%twig_name%" 2) AppKernel::registerContainerConfiguration позволяет подключить нужный дополнительный конфиг в зависимости от любого нужного параметра. В нём можно переопределить и глобальные параметры.
Kostiantyn
Да, такой подход используется сейчас, но это "костыльно" в нашем случае. т.к. конфиги должны быть динамические, и хотелось сделать все это не с помощью конфиг-файлов, а сервиса который знает где взять в нужный момент нужный конфиг.
Andrew
Идея для более навороченного костыля: на все бандлы сделать свои обёртки, которые грузят конфиг не из файлов, а откуда ещё надо, через SomeBundle\DependencyInjection\SomeExtension::load
Igor
умные ребята, подскажите по моему вопросу, как в группу добавлять роли в FOSUser ? роли там идут массивом через serialize
Kostiantyn
Пытался копать в эту сторону, но все это запускается ровно один раз, после чего кэшируется. Отладчик не заходит после этого в вызываемые методы. Либо "я не умею это готовить"
Andrew
Оверрайдните в AppKernel метод initializeContainer, там какие-то упоминания кеша есть
Kostiantyn
Дело в том, что билдить его при каждом вызове вместо использования кэша - тоже не вариант. Сайт будет лоадиться по 30 сек. Хотелось именно добавить параметр в конфигурацию бандлов который брался бы из вызова метода сервиса.
Mike
Ищи доклад от чувака из retailrocket на симфониконф
Kostiantyn
но похоже бандлы билдятся раньше, чем сервисы
Mike
там как разкрыты все подробности мультитенанс
Andrew
Хехе, вроде хочется кеш, а вроде не хочется. Ещё идея: кешить конфиг на каждый домен отдельно. Для этого каждый домен должен стать своим "environment", придётся ковырять web/app.php
Mike
Задача решаема, но харкорно
Kostiantyn
Вот млять.. казалось бы не такой уж редкий вопрос ) но действительно все через жопу приходится делать ((
Kostiantyn
@andrjs хочется кэш в котором будет строиться зависимость, как в конфигах сервиса - "Взять параметр из сервиса"
Kostiantyn
и он запускается каждый раз, прекрасно отрабатывает
Kostiantyn
я пробовал сделать config.php и в нем напрямую работать с контейнером, типа $def = $container->getDefinition('twig'); $def->addMethodCall('addGlobal', array('apiservicename', $c->getName()));
Kostiantyn
Но он сука и тут сказал что не знает twig
Kostiantyn
В моем случае все конфиги у сервиса должны запрашиваться каждый раз, а сервис уже должен сам заботиться о кэшировании
Mike
смотри https://www.youtube.com/watch?v=VNGuS-UB6DM
Kostiantyn
@klinkin Спасибо! Будем посмотреть!
Mike
тут по короче https://amylabs.ru/post/osobennosti-postroeniya-saas-servisa-na-symfony.html
Kostiantyn
Я дня три уже убил на это, 40 минут роли уже не играют! ) Спасибо еще раз!
Mike
расскажи потом как решишь)
Roman
Roman
Привет всем, прошу о помощи. уже день потратил... Задача кажется не сложной. Дали задачу написать url shortener. пытаюсь достать из базы урл для редиректа по коду, сокращающему эту ссылку. не могу достать через doctrine. запрос на чистом скуле написал, SELECT url FROM urlcontact WHERE shortcut = '9d85c1eaa3'; (пока код в явном виде) В контроллере пишу так $query = $repository->QueryBuilder('p') ->where('p.shortcut = :shortcut') ->getParameter('shortcut') ->getQuery(); $products = $query->getResult(); заранее спасибо!
D
try setParameter('shortcut', 'shortcutId');
Anonymous
лол, я свой типа пхп фреймворк написал
Anonymous
теперь кажется хорошо ООП понимаю
Anonymous
зачем я это говорю?
Anonymous
делайте свой фреймворк, и раз и навсегда поймёте пхп
Константин
/me рукалицо
Alexander
кто свою cms, фреймворк не писал, тот и не программист даже
Alex
Тот не велосипедист даже
Alexander
главное ей, им не пользоваться потом)
Alex
Чистая правда)) согласен на все 100
Anonymous
главное ей, им не пользоваться потом)
да ты через пол года, на это посмотришь, и скажешь "бля, неужели это я писал???"
Alexander
утром следующего дня
Anonymous
Anonymous
Я такой ужасный человек, монстр, вы не представляете на что я способен, как-то по пьяне я фреймворк написал
Alan
классно
Igor
Я заметил одну беду в EasyAdmin Создаем Группу, добавляем ее пользователю, а потом удаляем ее, и в момент удаления Группа становится ролью в таблице пользователи
Igor
может кто знает как решить?
Igor
Как посмотреть что происходит когда я нажимаю Submit после редактирования пользователя в EasyAdmin ?
Приветствую! Разбираюсь с доктриной, добавляю новые типы полей. Как можно определить свойства для типов, чтобы их использовать при генерации сущностей и желательно, чтобы эти параметры добавлялись в их описание?
Anonymous
не подскажите дебилу, что делать с ????? , как настроить бд, я не помню уже, я бросил пхп и перешел на руби, и вот какое-то время спустя вернулся. кодировка всех столбцов кроме id utf-8 general-ci . Та же кодировка и у таблицы, где это все. Не могу понять, помогите плиз
Anonymous
Kostiantyn
посмотри кодировку страницы.
Kostiantyn
возможно где-то выплевывается либо HTML-тег с неверной кодировкой, либо заголовок серверный
Anonymous
спасибо, ща гляну
Anonymous
ох мля... Я помню год назад ролик на ютюбе по этому поводу смотрел, и проблемма решилась. Вспомнить бы название
Kostiantyn
посмотри логи запросов в бд, возможно где-то на уровне подключения ог передает не верный collate
Igor
Ребята такая проблема Сущность User Сущность Discipline Соединены Many-to-Many в User * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Discipline") * @ORM\JoinTable(name="fos_user_user_discipline", * joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="discipline_id", referencedColumnName="id")} * ) Делаю обращение $em->getRepository('AppBundle:User')->findBy(['discipline'=>$disc->getId()]); В findBy discipline встает по CTRL+Пробел При обработке запроса выдает SQLSTATE[42S22]: Column not found: 1054 Unknown column 'fos_user_user_discipline.discipline_id' in 'where clause' Почему то ищет таблицу внутри User Подскажите куда копать?
Anonymous
ребята, стоит ли учить симфони новичку
Евгений
у меня было чистый php->codeigniter->symfony, думаю сложновато будет
Anonymous
я хочу YII2 учить, но перед этим что-то иное
Евгений
Кстати, кто нить использовал laravel?
Евгений
что можете сказать?
Евгений
по сравнению с symfony?
Константин
Я начал изучать symfony когда ещё и php толком не знал, ничего сложного не увидел. Yii2 вышел уже устаревшим. На первом рабочем месте программистом 2 месяца писал на laravel. После symfony это были 2 месяца страданий.
Anonymous
а где мождно симфони начать изучатт
Anonymous
ь*
Anonymous
никто ресурсов никаких не знает?
Константин
Я начинал отсуда http://symfony.com/doc/current/index.html
Константин
Что-то из бесплатного подглядывал тут https://knpuniversity.com/tracks/symfony
Константин
Плюс непрерывная гуглёшка всех появляющихся вопросов
Kostiantyn
Google + YouTube лучшие друзья, для изучения чего угодно. + всегда стоит начинать с офсайта, технологии. Если ты не справился с таким вопросом, может это не твое ? :)
Константин
Ставим google translate плагин и читаем с ним. Я когда начинал, через слово певодил. Главное желание
Valentin
@rbelixir http://gnugat.github.io/tags/ultimate%20symfony%20series/ задом наперед только, первая статья в конце
Anonymous
всем привет
Anonymous
ребят, почему доктрина может не удалять объект?
Anonymous
сейчас покажу
Anonymous
есть пару энтити
Anonymous
https://pastebin.com/2gwBgYYj
Anonymous
в цикле $world->getStruct()->removeElement($struct); $struct->setWorld(null); $struct->getTiles()->removeElement($struct->getTiles()->first()); $em->remove($struct->getTiles()); $em->remove($struct); $oneStruct = new WorldStructures(); $oneStruct->addTile($fill); $oneStruct->setWorld($player->getWorld()); $oneStruct->setX($xx); $oneStruct->setY($yy); $world->addOneStruct($oneStruct); $em->persist($fill); $em->persist($oneStruct); $em->persist($world);
Anonymous
никаких ошибок не происходит
Anonymous
но и элементы не удаляются...