Сообщество - Symfony
Добавить пост

Symfony

2 поста 15 подписчиков

Sonata Admin для Symfony

Предисловие:

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

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

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

В моей практике, самым используемым бандлом вместе с Symfony является бандл Sonata Admin. Ссыль на мануалы актуальной версии тут.

Что такое Sonata Admin bundle?

Это такой пакет для Symfony, который позволяет очень просто создать админ-панель для практически любого проекта.

Сложными словами: пакет, который позволяет создать конфигурируемый интерфейс редактирования сущностей ORM-модели.

Пакет работает с любыми типами баз данных, совместимыми с symfony. В моей практике были работы с MySQL и PostgreSQL.

И как это работает?

Все просто. Открываем сайт с мануалом, устанавливаем, потом просто открываем /admin и вуаля, у нас пустая админка для сайта. На скрине не совсем пустая, тут еще прикручено пару вещей, но общий смысл будет понятен.

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

А если добавить еще и какой-нибудь User Bundle, например FOSUserBundle, то при входе в админку будет еще и авторизация. А так же в админке можно будет добавлять и редактировать пользователей у вас на проекте.

Кстати, в Symfony можно легко поменять любой шаблон в бандле и вставить свой логотип, например. Или вообще другое оформление, но про это как-нибудь в другой раз.

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

А что дальше?

А дальше в админку можно добавить для редактирования любую таблицу, которую вы используете на проекте.

Нужно описать таблицу в App\Entity, создать конфигурацию для админки в App\Admin, потом просто подключить все к админке в config/services.yaml

Какой ты простой, скажет читатель, все рассказал, но ничего не понятно, давай пример.

Вот и пример.

Блог

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

1) Нужно описать таблицу в App\Entity

Займемся этим. Что нам нужно для примитивной запись в блоге? Конечно же Заголовок, Контент, дата публикации и уникальный идентификатор записи, чтоб ее можно было открыть по ссылке.

Создаем Entity/News/Post.php

Прописываем нужные поля внутри. Я решил вставить скриншотами, так как здесь я не нашел возможности адекватно представить код так, чтоб все не съехалось и не превратилось в кашу.

@moderator, а не планируется функционал вставки кода в редакторе?

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

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

Нужно не забыть добавить функцию

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

Эта функция обеспечит автоматическое добавление даты создания в пост, именно в момент его создания.

Так же, описываем геттеры и сеттеры, людям, что знакомы с ООП, это все знакомо, приводить код в пример не буду. Если очень лень, многие IDE умеют генерировать все сами. Например, phpStorm предлагает целое меню того, что можно сгенерировать

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

А так же, можно создавать entity не вручную, а через команду в консоли php bin/console make:entity, которая задаст несколько вопросов про типы полей и сама все сделает - это довольно удобно, но я привык вручную, так уж вышло.

Не забудьте сделать миграцию и применить ее.
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate

2. Cоздать конфигурацию для админки в App\Admin

Создаем Admin/News/PostAdmin.php

В этом файле необходимо прописать поля для админки. Для этого есть несколько функций.

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

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

configureDatagridFilters() - рассказывает админке по каким полям можно вести поиск.

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

configureFormFields() - Здесь описываются поля для страницы редактирования объекта

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

configureShowFields() - Здесь поля для отдельной страницы, которая позволяет просто посмотреть данные об объекте.

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост


3. Подключить все к админке в config/services.yaml

Открываем config/services.yaml и добавляем:

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

Вуаля, у нас все работает:

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

Можно добавлять новость

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

Ты чего, хочешь чтоб я писал текст новости в простом текстовом поле? А как же заголовки, параграфы, все такое, писать прям html разметкой чтоль? - Спросил бы читатель.

А это легко исправить, отвечу я. Есть множество редакторов, доступных в интернетах, я привык использовать ckeditor, под него есть даже специальный бандл. Устанавливаем его так, как написано в мануале, подключаем в Admin/News/PostAdmin.php и вуаля. У нас есть визуальный редактор новости.

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост

Итого, у нас есть блог, куда можно добавлять простые записи и админка для него. Я думаю, этого достаточно для описания базового функционала Sonata Admin.

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

Всем спасибо, я закончил! 😌 Вот вам кот из интернетов

Sonata Admin для Symfony Symfony, Программирование, PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост
Показать полностью 15

Про сообщество

Про сообщество PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост, Symfony

Всем привет!

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

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

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

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

Вот вам кот:

Про сообщество PHP, Веб-разработка, Веб фреймворки, Кот, Длиннопост, Symfony

Кот не мой, честно взят с просторов интернета. Но он прикольный.

Показать полностью 1
Отличная работа, все прочитано!