Павел
еще можно прикрутить тайпы от доктрины и большая часть мапится ей же
The Ant
крч дбал отдает чистый ответ от пдо или другого драйвера, вообще без всякой обработки. Настройки в бандле исключительно для доктрины. Никакие типы не работают, только для ентитей
Юра
Наверное там подумали что зачем это городить в ДБАЛ если ты скорее всего будешь делать свой ДТО
Юра
и в нем себе сконвертишуешь, возможно даже используя \Doctrine\DBAL\Connection::convertToPHPValue($value, $type)
Юра
чисто апликейшн специфик фича
Павел
Юра
Тип нужен если ты хочешь какой-то универсальный способ конвертации написать
Юра
А если ты пишешь ДТО, то типы известны
Юра
например MyDto::create($row, $conn);
Юра
ну чисто как пример
Павел
Юра
Тогда в чем вопрос? Почему ДБАЛ не хранит в БД данные о типе столбца?
Юра
Потомушта )
Павел
Павел
А дбал это асбтракция
Павел
Т.е фича - получить инфу о данных вместе с запросом на селект
Юра
Я вообще не знаю почему эти типы не вынесены в ОРМ
Юра
зачем они в дбал
Юра
Если она их никак не использует
Юра
И как ты информацию о типах хранишь?
Павел
Получаю тип из пдо, маплю этот тип на тип доктрины - получаю тайп кастер от доктрины
Юра
Не все базы поддерживают хранение метаионформации о типе?
Павел
Юра
А понял ты мапишь тип БД на тип доктрины руками
Юра
Я думал ты сразу храниш тип доктрины рядом где-то в БД
Павел
Юра
в каком-то там комент поле у столбца или что-то такое
Павел
Юра
понял да
Юра
Кто знает как лучше закрыть стейдж от кровлеров?
Юра
Закрыл через basic auth, но пошли проблемы с апи, в котором теперь тоже надо этот Бейсик аус передавать
Юра
И конфликт с обычной jwt авторизацией
Юра
Еще этот нгинкс настолько конченый в настройках что там сделать что-то сложнее отлай статику то еще приключение
Anton
Юра
Хотел так сделать да, но нгинкс чет сопротивляется
Юра
Лыжи не едут чет
Anton
А нгинкс то зачем?
Anton
В конфигурации никак?
Юра
Прям симфой?
Anton
Ну, да)
Юра
Она умеет басик аус?
Anton
Конечно)))))
Юра
Чет я в эту сторону не подумал
Юра
Хммсммс
Anton
security изучите)
Юра
Да я то знаю, простл не подумал как-то что она обычный басик аус может
Юра
Тупанул
Anton
Если не разберётесь - маякните
Anton
У меня есть, позавчера так закрывал)
Anton
Пока не у компа только
Nikolay
Привет всем, можете кто подсказать по формам. Есть форма, на нее надо добавить два радио-баттона. Хотелось бы сделать отдельными полями c типом RadioType, но не совсем понятно как вообще с таким работать (в твиге нужно выводить их отдельно как я понимаю через form_widget, c кастомной версткой)
$builder
->add('option1', RadioType::class, [
'mapped' => false,
'required' => true,
])
->add('option2', RadioType::class, [
'mapped' => false,
'required' => true,
])
Есть подход с ChoiceType и в цикле выводить уже в шаблоне, этот вариант простой, он работает, но не подходит в данном случае.
Есть ли вообще нормальный подход раздельно с этими радио-баттонами работать?
Юра
Ты пробовал в профайлере смотреть на форму?
Юра
Он помогает разобраться какие там элементы и как их отрендерить
Юра
Просто рисуешь нужные элементы нужными твиг фциями и всё
Юрий
Такое себе удовольствие на бэке формы рисовать во времена реактов с ангулярами.
Shokha
Юрий
тогда vue через CDN подцепить и то приятнее чем в шаблонах ковыряться
Alexey
Если просто не большая админка?
Тогда есть всякие там SonataAdmin, для максимально простого и стандартного отличная вещь. Ну, конечно превращается в ад, если нужна хоть какая-то кастомизация...
Evgeniy
Всем привет! Может кто-то помочь с данной проблемой? https://stackoverflow.com/questions/75430811/why-in-children-array-the-parent-property-does-not-serialize
artem
Evgeniy
Chatgpt?
Советует юзать MaxDepth and Groups
artem
Можно же на человекопонятном объяснить проблему
Evgeniy
Можно же на человекопонятном объяснить проблему
Суть в том, что симфони берет и конвертит объект в IRI строку. Но мне нужен объект, а не IRI. Я смотрел через xDebug нормализатор и было видно как симфони нормализует объект. Но на выходе я получаю все равно IRI
Mikhail
А какой объект нужен?
Предположим, что у нас есть объект X, он имеет вид:
{
id:
children: [
{
...
parent: - здесь должен быть опять объект X
}
]
Получаем рекурсивный бесконечный цикл. И maxDepth тут никак не может помочь, потому что X снаружи должен содержать X внутри, и это только при уровне вложенности 1
Evgeniy
Evgeniy
Просто.. я хотел в одном запросе получить весь список Item'ов и чтобы у каждого был children и parent свойства. Но есть другой вариант. Делать запрос на каждый клик и получать все что нужно для конкертного item'а
Mikhail
А почему в качестве parent нельзя просто родительский объект брать?
Evgeniy
На фронте есть метод, который рекурсивно проходит по всем parent'ам и собирает stack из titl'ов
Evgeniy
и потом делаю .join(' > ') и получаю что-то вроде этого
Omid_Reza
Hi guys
how to add blank line after the if clause the end curly braces
for example
if(true){
return ;
}
//this blank line means
$var="value"
in phpcs Fixer
Omid_Reza
Omid_Reza
which rule should I use?
Kirill
Всем привет! Подскажите, как вы используете интерфейсы для сервисов?
У меня три варианта:
1) Для каждого сервиса пишется свой интерфейс
2) Не писать интерфейсы
3) Писать общие интерфейсы. Например, многие сервисы имеют методы getAll() и getById().
Третий вариант мне нравится, но меня вот что коробит. Если такой интерфейс написать, то там нельзя будет указать возвращаемый тип, потому что метод getById в UserService вернет User, а в CarService вернет Car. Дальше мне приходит мысль объединить все entity общим интерфейсом, например EntityInterface и его возвращать в методе getById в интерфейсе для сервисов. Но тут возникает вопрос: нормально ли, что в интерфейсе будет одно возвращаемое значение, а в реализации другое?
Поделитесь, пожалуйста, как вы используете интерфейсы
Kirill
/*Interface*/
interface ServiceInterface
{
public function getById(int $id): EntityInterface;
}
/*Entity*/
class User implements EntityInterface
/*Service*/
final class UserService
{
public function getById(int $id): User
{
return $this->userRepository->find($id);
}
}
Kirill
Ну и такая же проблема с какими-нибудь мапперами. Везде метод fill, который принимает entity и DTO и заполняет одно другим. Отличаются только имена классов.
Kirill
Какие минусы в таком подходе?
Павел
Всем привет! Подскажите, как вы используете интерфейсы для сервисов?
У меня три варианта:
1) Для каждого сервиса пишется свой интерфейс
2) Не писать интерфейсы
3) Писать общие интерфейсы. Например, многие сервисы имеют методы getAll() и getById().
Третий вариант мне нравится, но меня вот что коробит. Если такой интерфейс написать, то там нельзя будет указать возвращаемый тип, потому что метод getById в UserService вернет User, а в CarService вернет Car. Дальше мне приходит мысль объединить все entity общим интерфейсом, например EntityInterface и его возвращать в методе getById в интерфейсе для сервисов. Но тут возникает вопрос: нормально ли, что в интерфейсе будет одно возвращаемое значение, а в реализации другое?
Поделитесь, пожалуйста, как вы используете интерфейсы
Не пишу интерфейсы тем более для сервисов. Ладно ещё репозитрий (хотя тоже холивар), но какой профит от сервиса?
Павел
Интерфейс сервиса, интерфейс репозитория. Скоро интерфейс дто делать начнём