Комментарии 6
Ничего не имею против SonataAdminBundle
. Но в EasyAdmin3
вся статья поместится в одну строку в методе ProductCrudController::configureFields
:
yield AssociationField::new('category')->autocomplete();
# config/services.yaml
App\Admin\ProductAdmin:
calls:
- [ setTemplate, [ list, SonataAdmin/list.html.twig ] ]
Программирование через конфиг.
tags:
- { name: sonata.admin, manager_type: orm, group: Content, label: Product }
Магические заклинания, которые можно узнать только в древних свитках в документации на 367 странице.
Чтобы не вызывало ошибку о несуществующем методе, создадим метод в сущности продукта.
Всякие костыли.
configureFormFields
configureDatagridFilters
configureListFields
configureShowFields
God-object, который умеет всё.
Верстка поехала, и чтобы исправить надо переопределять кучу кода. Способы переопределения снова надо долго искать в древних свитках.
object.price/100*(100-field_description.options.discount)
Бизнес-логика в представлениях.
Если Вы сделали бы лучше, то это не значит ведь, что я сделал плохо.
Не понимаю почему Вас смущают записи в конфиг.
В документации сонаты написано про создание геттера в сущности, который может вернуть что угодно. Это не костыли. Я мог и там создать эту "Бизнес-логику", но 1 поле == 1 значение. Я лишь показал, что можно это кастомизировать как угодно.
Но всё равно, спасибо за критику! Впредь буду думать шире.
Админка предполагает доступ к данным под определенной ролью пользователя (администратор).
А почему у вас доступ к ajax контроллеру открытый? Можно ли его как-то спрятать в сонату? Если возможно это сделать, то было бы интересно посмотреть код. На сколько я знаю у сонаты с этим проблема - интегрирование контроллеров/роутов, не связанных напрямую с сущностью
Пакетное действие SonataAdminBundle + Select2