Юра
а зачем тебе именно формат /search/region/city
Юра
как-то странно
Юра
тогда джаваскрипт
slo_nik
Юра
получи данные формы, сконструируй урл и сделай location.href = newUrl;
Юра
форма у тебя билдится на стороне пхп
Юра
поменять ей экшн можно только из джаваскрипта
Юра
он у тебя динамически зависит от выбранного элемента в селекте
Юра
тут симфа как бы не при чем
slo_nik
slo_nik
Юра
да
slo_nik
A
Привет. Стоит задача реализовать систему доставки уведомлений по различным каналам (Email, SMS, Telegram, в будущем пуш- уведомления). Пользователь может выбирать что и по каким каналам доставлять.
Есть внутренняя система уведомлений, как на любом другом сайте. Нужно доставлять эти уведомления, а также сгенерированные динамически (типа "У вас 5 новых сообщений").
Как бы вы это реализовали? Сейчас я думаю сохранять время последней отправки для каждого канала и типа уведомлений, но встаёт вопрос, как это сделать правильно, т. к. у каждого пользователя это время может отличаться. Это не является камнем преткновения, можно и это решить, но было бы интересно узнать о других вариантах решения.
A
Уточню вопрос: как понять, кому в данный момент отправлять уведомление?
A.D.🈴
Юра
Посмотри симфони компонент notifier
Юра
Может подойдет
A
Юра
Обычно это делают через очереди
Юра
Смотря что за логика у тебя
A
Сделать команды для каждого случая, которые будут отправлять задачи в очередь и оттуда рассылаться
Dmitriy
Всем привет! У меня есть 2 связанные таблицы: Пользователи и Статусы. При добавлении информации о пользователе, обновляется его статус. Я собираю объект UserEntity, в котором указываю статус, но в таблицу Статусы при каждом добавлении/обновлении объекта UserEntity добавляется новый статус. Можно сделать запрос в таблицу со статусами, найти нужный и установить объект статуса в объект пользователей.
Вопрос: Возможно ли упростить этот процесс, например обойтись без отдельного запроса в таблицу статусов? Тк при большом кол-во связанных таблиц, появляется оч много доп логики
A.D.🈴
Maks
у пользователя может быть несколько статусов?
Dmitriy
Maks
если число статуов конечно и переходы между ними логичны то можно попробывать FSM туда прикурутить вместо второй таблицы
Dmitriy
Сергей
»Тк при большом кол-во связанных таблиц, появляется оч много доп логики
что?)
Dmitriy
»Тк при большом кол-во связанных таблиц, появляется оч много доп логики
что?)
приходится делать запросы в связанные таблицы, проверять существование входящих значений (в случае если в связанной таблице хранятся только уникальные значение). Также бывает, что информация в связанной таблице приходит не полная, и приходится дописывать объект, а значит его нужно в начале запросить. У меня сейчас таблица с пользователями имеет 6 связных таблиц и по каждой из них приходится делать такие манипуляции
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
Юра
Увмдмшьн вызывается ли он вообще и что возвращает на твою строку даты
Юра
Может формат строки не тот или ещё что-то, сложно сказать