Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Основы кастомной валидации в Symfony 4/5 с примерами

Symfony *

В Symfony, на мой взгляд, очень удобный функционал валидации сущностей. Меня в частности очень подкупает использование формата аннотаций для конфигурирования правил валидации. В подавляющем большинстве задач готовые решения покрывают стандартные случаи. Но, как известно, валидация — дело тонкое, и никогда не знаешь, какие ограничения придется накладывать в этот раз. С другой стороны, более гибкая и продуманная валидация всегда поможет избежать ошибок пользователя.


Под катом приглашаю посмотреть, как легко писать свои ограничения и расширять имеющиеся на примере базовой валидации и валидации сравнения двух полей. Статья может быть интересна тем, кто еще мало знаком с валидацией в Symfony или пока обходил стороной возможности написания своих валидаторов.

Читать дальше →
Всего голосов 3: ↑2 и ↓1 +1
Просмотры 3.9K
Комментарии 1

Как переиспользовать код с бандлами Symfony 5? Часть 1. Минимальный бандл

PHP *Программирование *Symfony *
Из песочницы

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла.


В первой части:


  • Зачем нужны бандлы
  • Example Project: Calendar
  • Настраиваем окружение: 2 способа разработки
  • Создаем минимальный бандл
  • Подключение бандла в проект
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Просмотры 7.2K
Комментарии 1

Как переиспользовать код с бандлами Symfony 5? Часть 2. Выносим код в бандл

PHP *Программирование *Symfony *

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла.


В предыдущей статье мы создали минимальный бандл из двух файлов и подключили его в проект.


В этой статье:


  • Перенос кода в бандл
  • Dependency Injection: регистрация сервисов бандла в DI-контейнере
  • Перенос контроллеров и настройка роутинга
  • Механизм определения путей к ресурсам
  • Перенос шаблонов в бандл
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 2.2K
Комментарии 2

Как переиспользовать код с бандлами Symfony 5? Часть 3. Интеграция бандла с хостом: шаблоны, стили, JS

PHP *Программирование *Symfony *

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла.


В предыдущей статье мы вынесли в бандл основной код и шаблоны, настроили роутинг и подключение сервисов в Dependency Injection контейнер. В этой статье будем встраивать бандл в приложение-хост:


  • Интеграция шаблонов: 2 пути
  • Интеграция шаблонов: независимый модуль
  • Подключение стилей бандла в сборку
  • Интеграция шаблонов: встраивание в шаблоны хоста
  • Переопределение стилей и JS
Читать дальше →
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 1.3K
Комментарии 0

Как переиспользовать код с бандлами Symfony 5? Часть 4. Расширение бандла в хосте

PHP *Программирование *Symfony *

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла.


Проектируя бандл, надо думать, что должно быть инкапсулировано внутри него, а что — доступно для пользователя. Должен ли бандл иметь фиксированную функциональность или быть гибким и позволять себя расширять? Если требуется гибкость, то нужно предусмотреть какие-то точки-интеграции для расширения бандла, его интерфейс.


Попробуем предусмотреть такие точки в нашем демо-приложении. В этой статье:


  • Подключение пользовательской логики к бандлу
  • Работа с тегами
  • Compiler Pass
  • Автоконфигурация сервисов
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 2.4K
Комментарии 6

Как переиспользовать код с бандлами Symfony 5? Часть 5. Конфигурация

PHP *Программирование *Symfony *

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла.


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


  • Параметры DI-контейнера и их переопределение
  • Файл конфигурации бандла
  • Работа с конфигурацией
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.6K
Комментарии 0

Как переиспользовать код с бандлами Symfony 5? Часть 6. Тестирование

PHP *Программирование *Symfony *

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла.


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

Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.6K
Комментарии 5

Как переиспользовать код с бандлами Symfony 5? Часть 7. Релизный цикл, установка и обновление

PHP *Программирование *Symfony *

Поговорим о том, как прекратить копипастить между проектами и вынести код в переиспользуемый подключаемый бандл Symfony 5. Серия статей, обобщающих мой опыт работы с бандлами, проведет на практике от создания минимального бандла и рефакторинга демо-приложения, до тестов и релизного цикла бандла.


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


В этой статье:


  • README.md
  • Установка: через composer, рецепты Flex, консольные команды
  • Релизный цикл, выпуск новых версий
  • Семантическое версионирование
  • Фиксация изменений в CHANGELOG.md
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры 1.4K
Комментарии 0

[Symfony 5] Раздельная авторизация для админов и пользователей с двумя разными сущностями и формами входа

PHP *Symfony *
Из песочницы

Цель


Создать в Symfony 5 раздельную авторизацию:

  • Администратор — будет иметь сущность Admin, url для входа /admin/login
  • Пользователь — будет иметь сущность User, url для входа /login
  • Данные для входа не должны пересекаться, мы не можем авторизоваться как User на странице /admin/login
  • Должны быть созданы две разные Entities
  • Должны быть созданы два разных контроллера для входа и два разных Security
  • Возможность настройки переадресации после авторизации отдельно друг от друга
  • Возможность использовать разные авторизационные данные (например, для User мы хотим, чтобы пользователи вводили email/password, а для Admin обеспечить доп. защиту, добавив какой-нибудь Uuid

Зачем нужен этот гайд?


У меня стояла задача разделить форму входа с сущностью User на две разные — для пользователя (entity User) и для администратора (entity Admin) для нормального функционала админ панели (в данном случае EasyAdmin).

В данном туториале я распишу пошагово весь путь, начиная с установки самого фреймворка, и заканчивая созданием двух разных форм авторизации.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Просмотры 8.7K
Комментарии 11