Как стать автором
Обновить

Комментарии 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 значение. Я лишь показал, что можно это кастомизировать как угодно.

Но всё равно, спасибо за критику! Впредь буду думать шире.

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

Админка предполагает доступ к данным под определенной ролью пользователя (администратор).

А почему у вас доступ к ajax контроллеру открытый? Можно ли его как-то спрятать в сонату? Если возможно это сделать, то было бы интересно посмотреть код. На сколько я знаю у сонаты с этим проблема - интегрирование контроллеров/роутов, не связанных напрямую с сущностью

Можно проверять роль в AjaxController. Просто передавать в качестве параметра id_user. Создать queryBuilder который достанет роли данного пользователя

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации