Юра
а зачем тебе именно формат /search/region/city
Юра
как-то странно
slo_nik
а зачем тебе именно формат /search/region/city
меня и обычный формат устроил бы, а это требует заказчик, для продвижения сайта.
Юра
тогда джаваскрипт
slo_nik
а зачем тебе именно формат /search/region/city
хочет, чтобы в адресе был регион и город.
slo_nik
тогда джаваскрипт
по другому никак? Например в bundlForm?
Юра
получи данные формы, сконструируй урл и сделай location.href = newUrl;
Юра
форма у тебя билдится на стороне пхп
Юра
поменять ей экшн можно только из джаваскрипта
Юра
он у тебя динамически зависит от выбранного элемента в селекте
Юра
тут симфа как бы не при чем
slo_nik
поменять ей экшн можно только из джаваскрипта
Ну да, от динамически выбранном select. Только приступил к изучению symfony, так что мои вопросы могут показаться очень странными)))
slo_nik
slo_nik
поменять ей экшн можно только из джаваскрипта
значит можно убрать setAction из buildForm?
Юра
да
slo_nik
да
значит так и сделаю.
A
Привет. Стоит задача реализовать систему доставки уведомлений по различным каналам (Email, SMS, Telegram, в будущем пуш- уведомления). Пользователь может выбирать что и по каким каналам доставлять. Есть внутренняя система уведомлений, как на любом другом сайте. Нужно доставлять эти уведомления, а также сгенерированные динамически (типа "У вас 5 новых сообщений"). Как бы вы это реализовали? Сейчас я думаю сохранять время последней отправки для каждого канала и типа уведомлений, но встаёт вопрос, как это сделать правильно, т. к. у каждого пользователя это время может отличаться. Это не является камнем преткновения, можно и это решить, но было бы интересно узнать о других вариантах решения.
A
Уточню вопрос: как понять, кому в данный момент отправлять уведомление?
A.D.🈴
Уточню вопрос: как понять, кому в данный момент отправлять уведомление?
Так надо хранить, кому и когда и что ты отправлял последний раз
Юра
Посмотри симфони компонент notifier
Юра
Может подойдет
A
Так надо хранить, кому и когда и что ты отправлял последний раз
Мне нужно получить список тех, кому сейчас нужно разослать уведомления
Юра
Обычно это делают через очереди
Юра
Смотря что за логика у тебя
A
Обычно это делают через очереди
Сейчас тоже пришла такая мысль
A
Сделать команды для каждого случая, которые будут отправлять задачи в очередь и оттуда рассылаться
Dmitriy
Всем привет! У меня есть 2 связанные таблицы: Пользователи и Статусы. При добавлении информации о пользователе, обновляется его статус. Я собираю объект UserEntity, в котором указываю статус, но в таблицу Статусы при каждом добавлении/обновлении объекта UserEntity добавляется новый статус. Можно сделать запрос в таблицу со статусами, найти нужный и установить объект статуса в объект пользователей. Вопрос: Возможно ли упростить этот процесс, например обойтись без отдельного запроса в таблицу статусов? Тк при большом кол-во связанных таблиц, появляется оч много доп логики
Maks
у пользователя может быть несколько статусов?
Dmitriy
А зачем статусы хранить отдельно?
это просто как пример, может не совсем удачный, проблема именно в сохранении объектов со связью many-to-one
Maks
если число статуов конечно и переходы между ними логичны то можно попробывать FSM туда прикурутить вместо второй таблицы
Dmitriy
если число статуов конечно и переходы между ними логичны то можно попробывать FSM туда прикурутить вместо второй таблицы
эту идею понял, спасибо. Но если кол-во записей не ограничено? Например пользователи и документы
Сергей
»Тк при большом кол-во связанных таблиц, появляется оч много доп логики что?)
Dmitriy
»Тк при большом кол-во связанных таблиц, появляется оч много доп логики что?)
приходится делать запросы в связанные таблицы, проверять существование входящих значений (в случае если в связанной таблице хранятся только уникальные значение). Также бывает, что информация в связанной таблице приходит не полная, и приходится дописывать объект, а значит его нужно в начале запросить. У меня сейчас таблица с пользователями имеет 6 связных таблиц и по каждой из них приходится делать такие манипуляции
Dmitriy
Может я сильно усложнил и есть решение проще, но я его пока не смог найти
Юра
Денормализация не поможет?
Юра
Ну типо хранить ещё где-то твои статусы или что там у тебя
Юра
Прям в юзере джсоном или как-то еще
Юра
Народ. Вопрос философский.
Юра
В апи платформ если в апи запросе к примеру пост или пут передаешь вложенную сущность в виде объекта, то оно обновляет и соответствующую вложенную энтити
Юра
Это норм подход?
Юра
Просто есть строгий подход типо передавать только айдишникт рилейшенов, а обновлять уложенные сущности отдельными запросами, а есть как вот в апи платформ
Dmitriy
Денормализация не поможет?
нет, денормализация не вариант)
alexandr
Приветы. Кто-нибудь сталкивался с таким: The class 'DateTime' was not found in the chain configured namespaces App\Document\ ? Пытаюсь формой создать несколько дат в документе: /** * @MongoDB\Field( * type="collection", * nullable=false, * name="available" * ) * @MongoDB\EmbedMany(targetDocument="AvailableDates::class") */ protected ArrayCollection $available; public function addAvailable(AvailableDates $dates): void { $this->available->set('from', $dates->getFrom()); $this->available->set('to', $dates->getTo()); } Форму билжу так: $builder ->add('from', DateType::class, [ 'widget' => 'single_text', 'label' => false, 'attr' => [ 'class' => 'date-from uk-input', ] ]) ->add('to', DateType::class, [ 'widget' => 'single_text', 'label' => false,
Юра
Поставь слеш перед DateTime
Maks
обратный)
Юра
Да
Юра
\
Alexey Mishurovskiy
всем привет! чот туплю. как сериализовать поле даты в объект Datetime?
Maks
или явно импортируй через use
Юра
Или ты про формы?
Alexey Mishurovskiy
Юра
Там все из коробки должно работать
alexandr
Поставь слеш перед DateTime
Не-а, не помогает. Заменял на \DateTime и \DateTimeInterface и импортировал явно - всё одно. В документе вот так: / * @MongoDB\Field( * type="date", * nullable=false, * name="from" * ) */ protected \DateTime $from; / * @MongoDB\Field( * type="date", * nullable=false, * name="to" * ) */ protected \DateTime $to;
Юра
В форме без слеша
Юра
Мод там тоже надо заменить
alexandr
В форме без слеша
Не понял ) через formBuilder вроде нормально простовляется type="date" на инпут: <input type="date" id="resource_available_0_from" name="resource[available][0][from]" required="required" class="date-from uk-input">
Юра
Так. Ты озвучил уже две проблемы
Юра
Ты про какую сейчас говоришь?
Юра
Если про сериализацию попробуй добавить аннотация @var \DateTime
Юра
Перед монгодб филд
Юра
И кеш почисти на всякий
alexandr
Про сериализацию не я спрашивал ), у меня одна проблема: ошибка "The class 'DateTime' was not found in the chain configured namespaces App\Document\" , подробнее она так выглядит: Uncaught PHP Exception Doctrine\Persistence\Mapping\MappingException: "The class 'DateTime' was not found in the chain configured namespaces App\Document\" at /code/vendor/doctrine/persistence/lib/Doctrine/Persistence/Mapping/MappingException.php line 23
Alexey Mishurovskiy
Alexey Mishurovskiy
/** * @var DateTime|null * @ORM\Column(type="date", nullable=true) * @Groups({"api1"}) */ private $birthday;
Alexey Mishurovskiy
н вытается сериализовать это строкой, тк. приходят данные строкой. и в datetime это не преобразуется
Юра
Слеш
Юра
И кеш
Alexey Mishurovskiy
сейчас попробую.
alexandr
Слеш обратный подставлял, явно импортировал, кэш скинул, даж все эти команды делал: doctrine:mongodb:cache:clear-metadata doctrine:mongodb:generate:hydrators doctrine:mongodb:generate:proxies
Alexey Mishurovskiy
Failed to denormalize attribute "birthday" value for class "App\Entity\Lead\Lead": Expected argument of type "DateTime or null", "string" given at property path "birthday".
Юра
Тогда погугли на тему DateTimeNormalizer
Юра
Мож.он у тебя не.включен
Alexey Mishurovskiy
/** * @return Serializer * @throws \Doctrine\Common\Annotations\AnnotationException */ public static function createJsonSerializer() { $classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader())); $encoders = [new JsonEncoder()]; $normalizers = [new ObjectNormalizer($classMetadataFactory, new MetadataAwareNameConverter($classMetadataFactory, new CamelCaseToSnakeCaseNameConverter())), new DateTimeNormalizer()]; return new Serializer($normalizers, $encoders); }
Юра
Тогда идёшь в этот нормалайзер и дебажишь его метод supports
Юра
Увмдмшьн вызывается ли он вообще и что возвращает на твою строку даты
Юра
Может формат строки не тот или ещё что-то, сложно сказать