SonataAdmin Установить проблему

Я пытаюсь установить SonataAdmin в моем проекте Symfony, но в конце второй части документа, когда я пытаюсь перейти по адресу " http://localhost:8000/admin/ ", у меня есть ошибка: "Вы запросили несуществующая служба "admin.category" в. (которая импортируется из "C:\wamp64\www\Sonata/app/config\routing.yml"). Убедитесь, что имеется загрузчик, поддерживающий тип "sonata_admin" ".

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

параметры: #parameter_name: value

Сервисы:

# default configuration for services in *this* file
_defaults:
    # automatically injects dependencies in your services
    autowire: true
    # automatically registers your services as commands, event subscribers, etc.
    autoconfigure: true
    # this means you cannot fetch services directly from the container via $container->get()
    # if you need to do this, you can override this setting on individual services
    public: false

admin.category:
    class: AppBundle\Admin\CategoryAdmin
    arguments: [~, AppBundle\Entity\Category, ~]
    tags:
        - { name: sonata.admin, manager_type: orm, label: Category }


# makes classes in src/AppBundle available to be used as services
# this creates a service per class whose id is the fully-qualified class name
AppBundle\:
    resource: '../../src/AppBundle/*'
    # you can exclude directories or files
    # but if a service is unused, it's removed anyway
    exclude: '../../src/AppBundle/{Entity,Repository,Tests}'

# controllers are imported separately to make sure they're public
# and have a tag that allows actions to type-hint services
AppBundle\Controller\:
    resource: '../../src/AppBundle/Controller'
    public: true
    tags: ['controller.service_arguments']

# add more services, or override services that need manual wiring
# AppBundle\Service\ExampleService:
#     arguments:
#         $someArgument: 'some_value'

`

Отступ идет неправильно, я добавляю вам изображение этого файла. Сервисный код

3 ответа

Решение

Я думаю, что вы сделали ошибку, написав свой category.admin служба в: Sonata/app/config/routing.yml вместо Sonata/src/YourAdminBundle/Resources/config/services.yml

Услуги администратора сонаты должны быть публичными. В вашей конфигурации у вас есть по умолчанию как public: false и именно поэтому вы получаете эту ошибку.

Итак, у вас есть 2 варианта:

  1. Уточнить public: true для службы администратора (в вашем примере файла)
  2. Или лучший способ: создайте новый файл служб (например, admin.yml), где вы не используете эти значения по умолчанию (_defaults ключ с public: false). Общественность true по умолчанию, так что вам не нужно указывать это _defaults, В этом случае вы должны импортировать новый файл в config.yml работать:

Верх app/config.yml

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }
    - { resource: admin.yml }

app/admin.yml содержание:

services:
    admin.category:
        class: AppBundle\Admin\CategoryAdmin
        arguments: [~, AppBundle\Entity\Category, ~]
        tags:
            - { name: sonata.admin, manager_type: orm, label: Category }

Запустите эту команду на терминале. Возможно, вы пропустили установку

php composer.phar require sonata-project/doctrine-orm-admin-bundle

После этого добавьте этот код ниже в ваш AppKernel.php

// app / AppKernel.php

public function registerBundles()
{
    return array(
        // ...
        // set up basic sonata requirements
        // ...
        new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
        // ...
    );
}
Другие вопросы по тегам