Пользовательский порядок элементов на левой боковой панели Admin Sonata

Я пытаюсь сделать, чтобы левая сторона имела индивидуальный порядок (не по алфавиту). У меня есть больше комплектов и для каждого комплекта у меня есть services.yml, В каждом.yml у меня есть порядок, который я хочу, но Sonata делает индивидуальный заказ (AZ) для каждой группы. Как можно дать текущий порядок индекса? Я не хочу помещать весь код в app/config/services.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }
    - { resource: currencies.yml }
    - { resource: '@XYZBundle/Resources/config/services.yml' }

Содержимое XYZBundle/Resource/config/services.yml:

services:
    xyz.admin.entity.one:
        class: XYZBundle\Admin\EntityAdmin_1
        arguments: [~, XYZBundle\Entity\Entity_1,  AppBundle:CRUD]
        tags:
            -
                name: sonata.admin
                manager_type: orm
                label:  Entity One
                audit: true
        public: true
    xyz.admin.entity.two:
        class: XYZBundle\Admin\EntityAdmin_2
        arguments: [~, XYZBundle\Entity\Entity_2,  AppBundle:CRUD]
        tags:
            -
                name: sonata.admin
                manager_type: orm
                label:  Entity Two
                audit: true
        public: true
    xyz.admin.entity.three:
        class: XYZBundle\Admin\EntityAdmin_3
        arguments: [~, XYZBundle\Entity\Entity_3,  AppBundle:CRUD]
        tags:
            -
                name: sonata.admin
                manager_type: orm
                label:  Entity Three
                audit: true
        public: true

И app / config / config.yml

sonata_admin:
    dashboard:
       groups:
          loan.admin:
              label: Custom XYZ
              icon: '<i class="fa fa-dollar"></i>'
              items:
                  - xyz.admin.entity.one
                  - xyz.admin.entity.two
                  - xyz.admin.entity.three

Вот как это выглядит. (Конфиденциальные имена лиц)

1 ответ

Решение
sonata_admin:
    templates:
        # default global templates
        layout:  SonataAdminBundle::layout.html.twig
    title_logo: images/logo.png
    title: Your title
    dashboard:
        groups:
            identifier.for.this.group:
                label:           Your Label
                icon:            '<i class="fa fa-globe"></i>'
                items:
                    - sonata.admin.service_name

Услуга стандартная для сонаты

sonata.admin.service_name:
    class: AppBundle\Admin\YourSonataAdminClass
    tags:
        - { name: sonata.admin, manager_type: orm, label: "Your Label" }
    arguments:
        - ~
        - AppBundle\Entity\AsociatedEntity
        - ~

Я заказал свою группу меню так:

-> во-первых, у вас должно быть определенное имя группы, которое легко запомнить (панель инструментов, счет и т. д.), и сделать свою конфигурацию в config/services.yaml:

....
    App\Admin\OrderAdmin:
        arguments: [~, App\Entity\Order, App\Controller\ActionAdminController]
        tags:
            - { name: sonata.admin, manager_type: orm, group: dashboard, label: Orders }
    App\Admin\RequestAdmin:
        arguments: [~, App\Entity\Request, App\Controller\ActionAdminController]
        tags:
            - { name: sonata.admin, manager_type: orm, group: dashboard,label: Request }
    App\Admin\clientAdmin:
        arguments: [~, App\Entity\Client,  App\Controller\ActionAdminController]
        tags:
            - { name: sonata.admin, manager_type: orm, group: dashboard,label: "client" }
    App\Admin\BillAdmin:
        arguments: [~, App\Entity\Bill, App\Controller\ActionAdminController]
        tags:
            - { name: sonata.admin, manager_type: orm, group: bill, label: 'Bill clients' }
        public: true
    App\Admin\DailyBillAdmin:
        arguments: [~, App\Entity\DailyBill, App\Controller\ActionAdminController]
        tags:
            - { name: sonata.admin, manager_type: orm, group: bill, label: 'Daily Bills' }
    App\Admin\OlderBillAdmin:
        arguments: [~, App\Entity\OlderBill, App\Controller\ActionAdminController]
        tags:
            - { name: sonata.admin, manager_type: orm, group: bill, label: 'Older Bills clients' }
        public: true
    App\Admin\ConfigurationAdmin:
        arguments: [~, App\Entity\Configuration, ~]
        tags:
            - { name: sonata.admin, manager_type: orm,group: configuration, label: 'Configuration Taxes' }
    App\Admin\UserAdmin:
        arguments: [~, App\Entity\User, App\Controller\ActionAdminController]
        tags:
            - { name: sonata.admin, manager_type: orm,group: users, label: 'User Management' }
.....

и после того, как вы можете легко заказать имя своей группы, например, в config/packages/sonata_admin.yaml, например:

sonata_admin:
    title: 'Your Title'
    dashboard:
        blocks:
            - { type: sonata.admin.block.admin_list, position: left }
        groups:
            dashboard:
                label: DASHBOARD
            bill:
                label: BILLS
            configuration:
                label: CONFIGURATIONs
            users:
                label: USERS
            ......

и если вы хотите переупорядочить элемент в группе или не в группе, вы можете использовать параметры элементов. вот документация для этого: документация

Другие вопросы по тегам