• Как правильно в Symfony десериализовать Request в DTO, а последний потом в сущность?

    Как человек, который в своё время так переусложнял код, что потом сам не понимал, что и где в проекте происходит, посоветую вам использовать самый лучший принцип на свете - "KISS"

    Поэтому, ничего сложного пока не выдумывайте, поверьте, вы всегда сможете потом всё усложнить)))

    Я бы сделал так:

    • В контроллере сериализуем JSON в DTO ( можно вообще вот так https://symfony.com/blog/new-in-symfony-6-3-mappin... )
    • Далее создаёс сервис, который будет нашим маппером, и который будет иметь 2 метода "fromDtoToEntity" и "fromEntityToDto", и он будет заниматься всеми преобразованиями туда-сюда.
    • В этом маппере пишем наитупейшую логику, как вы и писали $user-setAge($DTO->getAge());
    • Отдаём клиенту ответ из контроллера


    Этот вариант максимально прозрачен и сильно сэкономит вам время при дебаге, потому что вы в два клика сможете найти всю логику.
    Ответ написан
    9 комментариев
  • Как получить доступ из docker контейнера к mysql на localhost?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Дело в том, что у каждого контейнера внутри свой loopback интерфейс с IP 127.0.0.1

    Есть два пути, чтобы добиться желаемого.

    Первый, убрать изоляцию с сети (network_mode: host), тогда всё просто заработает, но так делать не надо потому что на проде тебе никто не позволит так делать.

    Второй, надо заставить MySQL слушать либо на 0.0.0.0 (то есть на всех интерфейсах) и подключаться к ней из контейнера по IP шлюза (его можно посмотреть в выводе docker inspect <container_name>), либо заставить MySQL слушать именно на одном IP который является шлюзом для контейнера.
    Ответ написан
    2 комментария
  • Почему сайты отказываются от GET параметров на станицах?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Человечество развивается, люди становятся умнее, начинают наконец понимать стандарты. Ну, кроме разработчиков битрикса, конечно.
    Ответ написан
    Комментировать
  • Как перехватить исключение выбрасываемое из-за несуществующего метода объекта?

    @MaLuTkA_UA
    Для подобных целей существует функция method_exists.

    Ваш вариант хоть и рабочий но очень дорогой по ресурсам сервера.
    Ответ написан
    1 комментарий
  • Как произвести валидацию JWT токена с помощью public.key?

    И вообще, что проверяется публичным ключок - сам токен или его подпись.

    Подпись в самом JWT (JWS).

    при ее валидности потом декодируется вручную payload токена и вычисляется по меткам времени его валидность

    Всё верно.

    где лучше производить валидацию токена в случае SPA приложения: на фронтенде при каждом запросе к серверу, либо же на бэкэенде получаю при каждом запросе access_token с фронта?

    На сервере, куда делаются защищённые запросы, естественно. Валидировать токен на фронте бесполезно, а отсутствие валидации на сервере означает, что сервер будет не защищён. Любой злоумышленник сможет авторизоваться под любым пользователем отправив свой JWT.

    Единственное, что стоит проверять на фронте, это срок действия токена. Если он истёк, нужно получить новый токен.
    Ответ написан
    3 комментария
  • Почему при генерации pdf изображения в документ вставляются только в base64 кодировке?

    demon416nds
    @demon416nds
    Разработчик на чем попало
    Потому что библиотека не может скачивать изображения по ссылкам. Изображения же в base64 встроены в страницу и не требуют скачивания
    Ответ написан
    3 комментария
  • 128 символов когда их всего 95?

    vfreelancer
    @vfreelancer
    php
    В отличие от strlen(), iconv_strlen() учитывает кодировку строки. Длина string не обязательно будет соответствовать количеству байт в ней, так как в различных кодировках различные символы кодируются различным количеством байт, например, юникод может быть и двух-, и четырёхбайтным.

    попробуйте mb_substr с указанием кодировки
    Ответ написан
  • Нужен совет опытных WEB разработчиков?

    @rPman
    Самый неправильный способ обучения - с конца. Это очень неэффективно если не бессмысленно, изучать программирование непоследовательно.

    Смотреть как другие решают проблемы может помочь только в одном случае, если ты хочешь посмотреть как именно твою задачу решили другие, и максимально полезно это будет только если понимания именно этих действий, которые выполняет другой человек, тебе не хватает, что само собой нереально, обычно человек не знает больше (а значит достаточно если что то будет непонятно хотя бы на одном шаге, дальше смотреть бесполезно) либо наоборот знает больше чем автор видео, а значит смотреть то что уже знаешь - лишняя трата времени.

    Веб технологии - одни из самых сложных технологий нашего времени, и включают в себя сразу кучу всего, что нужно знать и понимать. То что благодаря готовым фреймворкам и конструкторам новички могут создавать крутые поделки даже не понимая что они делают, не поможет им развиваться.

    Советую изучать с низов, самостоятельно, чтобы было понимание каждого шага, всего что происходит.
    * операционные системы, процессор и многопоточность, сети,...
    глубоко изучать это не требуется но базовые понимания нужны чтобы не получать медленное приложение только потому что не знал что каждый твой запрос в tcp это 'туда-сюда', и это медленно (десятки миллисекунд), что одновременно два человека пытающиеся что то изменить на сайте нужно разруливать чтобы не было конфликтов и т.п.
    * бакэнд и фронтэнд
    буквально что значит запрос и генерация ответа, какие бывают способы организации этого бакэнда (http rest и к примеру websocket), не понимание разницы между бакэндом и фронтэндом у новичков рождает абсурдные вопросы как из javascript изменить переменную php (и наоборот)... в чем разница между генерацией страницы на сервере и в браузере.
    * html, css,..
    верстка и дизайн, отдельный мир браузерных стандартов, исторических наслоений,. когда стоит применять фреймы, почему шрифты по разному выглядят, разные устройства и размеры экранов, разные способы взаимодействия (сенсорный экран, мышь, клавиатура)...
    * базы данных
    еще более огромный мир атомарных транзакций, индексов, нормальных форм и прочего
    * девопс
    без умения выбрать инструмент, настроить тулчейны, среду разработки, среду исполнения (веб сервер), настроить бакапы и прочее пытаться что то разрабатывать это как в слепую гулять по лесу, будешь постоянно на ветки натыкаться
    ...
    это я еще про системную аналитику не сказал, обычно прежде чем что то создавать, нужно продумать как это все делать, что такое технический долг и т.п., а еще есть тестирование, обслуживание, работа с отказами (сервер сдох, база упала, как все восстановить), обновление на живую и прочие веселья

    без понимания всего этого, даже поверхностного, будешь натыкаться на огромные дыры в разработке.
    Ответ написан
    7 комментариев
  • Как правильнее будет вернуться в обучение?

    @Drno
    Это вопрос из области психологии и самомотивации.
    В первую очередь тебе должно быть это ИНТЕРЕСНО. Если этого нет - любая работа даже за овердохера денег будет каторгой.

    Вариант два. Ты понимаешь отсутствие перспектив, понимаешь что тебе надо содержать себя, жену, кошку, может жену-кошку, и кидаешься это изучать и искать вакансию.

    Про самозванца. Начни. поднимать тестовое задание на ubuntu server.
    Ответ написан
    3 комментария
  • Генератор случайного числа с отправкой на почту?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    У вас вопрос буквально уровня
    "Надо в понедельник пойти на алгебру, во вторник на литературу, а по пятницам на обж. Может кто сталкивался с таким???"
    Никаких "вариантов" тут встречать не надо. Если человек в принципе умеет ходить, и знает что такое алгебра с литературой.

    Вы вообще в состоянии понять, что это три разных действия, а не одно?
    Сгенерировать число, отправить письмо, и наладить регулярный запуск. Все три совершенно примитивные, и по каждому есть миллиарды примеров в интернете.
    Какая проблема взять пример для каждого и соединить?
    Ответ написан
    Комментировать
  • Как лучше аутентифициоровать пользователя в React js?

    @onekrugoikov
    Как лучше понятие растяжимое =)

    Рекомендую использовать все таки JWT авторизацию:
    1) Отправляем на сервер email и пароль.
    2) На сервере идентифицируем пользователя и генерируем токен в который зашиваем id пользака.
    3) В Response возвращаем какие то данные и токен и сохраняем его в куки (ВНИМАНИЕ! Не в localstorage, а именно в куки - так безопасней).
    4) На клиенте зашиваем токен в заголовок: Authorization: Bearer <TOKEN>

    В случае логаута:
    1) Удаляем токен из куки
    2) Редиректим пользака на страницу авторизации

    Я в большинстве своих приложений вообще использую Kerberos.
    Ответ написан
    1 комментарий
  • Как лучше работать в postgresql и php с временными зонами?

    @tukreb
    Лучше работать через DateTimeImmutable. А от DateTimeизбавляться где возможно.
    Для PostgreSQL DateTimeImmutable это - TIMESTAMP(0) WITHOUT TIME ZONE
    https://stackoverflow.com/questions/67536245/datet...
    https://github.com/symfony/symfony/issues/47580

    Вы всегда сможете прибавить к времени часовой пояс, там где вам нужно.
    Ответ написан
    Комментировать
  • Как происходит аутентификация в Symfony на примере из документации?

    @tukreb
    Под капотом всё происходит, перехватываются события и симофни в своих компонентах всё это делает.
    Но многие предпочитают реализовать свои проверки, чтобы иметь больше контроля. И у симфони есть для этого инструкция.
    https://symfony.com/doc/current/security/custom_au...
    https://symfony.com/doc/current/security/user_chec...
    Вы вообще можете реализовать всё сами, просто прочитай документацию там всё расписано.
    Ответ написан
    4 комментария
  • Сделать Entity по имеющейся уже таблице?

    @tukreb
    Это делает депрекейтет команда:
    php bin/console doctrine:mapping:import "App\EntityFromDB" annotation --path=src/EntityFromDB

    https://symfony.com/doc/current/doctrine/reverse_e...

    Почему депрекейтет? Да, потому что она не может покрыть все случае, а поддерживать никто её не хочет.
    Даже если вы создадите по ней сущности, вам придётся всё равно перепахать их все, особенно если у вас всё на атрибутах, т.к она поддерживает только аннотации.

    Запускать миграции нужно всегда. Все изменения БД в современном мире идут ТОЛЬКО через миграции.

    П.С Почему люди предпочитаю сначала код, потом бд, можете почитать здесь :) https://elisdn.ru/blog/104/domain-entities-modelling
    Ответ написан
    4 комментария
  • Сделать Entity по имеющейся уже таблице?

    doctrine:mapping:import, но допиливать вручную все равно придется
    Ответ написан
    Комментировать
  • Почему в Битрикс так себя ведет блок Услуги?

    Liatano
    @Liatano
    1. Что значит дублируется? где?
    2. Скорее всего используются включаемые области/файлы в подвале или шапке. В зависимости от ленивости и прямоты рук может быть реализовано по-разному. Например может просто проверяться,что страница "главная" и вставляться файл, может использоваться компонент bitrix:main.include, тогда поиск кода зависит от параметра "AREA_FILE_SHOW"(file,page,section). Еще стоит проверить php файлы,которые валяются рядом с index.php, может натолкнетесь на что-то интересное
    3.Скорее всего используются компоненты аспро,а они знают,какие настройки стоят в модуле. если реакции нет - значит компоненты разработчик пихнул сам либо что-то сломал.
    Ответ написан
    3 комментария
  • По какому принципу работает SSO и распределения прав (на примере keycloak)?

    rukbrook
    @rukbrook
    1. да, вам нужно отправить запрос, содержащий реалм, идентификатор клиента в этом реалме и данные достаточные для получения токена (к примеру grant_type="password", username, password, client_secret)
    2. да, он получает access_token и refresh_token. Вы можете декодировать токен и посмотреть что в нем храниться и вытащить данные которые вам нужны к примеру в нем хранятся роли и username, при этом можно положить туда дополнительную инфу
    3. проверка разрешений на беке, для простоты ищете что-то на подобии spring-security, но для php, который будет проверять ваш токен и роли в нем, и в зависимости от роли будете отдавать либо 200 либо 401 на запрос к которому у пользователя нет доступа
    4. если вам не нужно связать какие-то данные вашего приложения с идентификатором пользователя в кейклоке, то не нужно
    Ответ написан
    6 комментариев
  • Можно ли текстовую переменную хранить в таблице Mysql?

    @galaxy
    Пожалуйста, не нужно меня посылать читать мануалы PHP
    похоже, что нужно, но ок, не буду.
    Вам знакома конструкция var_dump? Попробуйте сделать var_dump($date);
    может, появятся идеи.
    spoiler
    Если нет, все-таки почитайте мануал, там есть примеры
    Ответ написан
    3 комментария