Проблема с установкой SonataAdmin

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

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

параметры: #parameter_name: значение

Сервисы:

# 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'

`

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


person jpp28    schedule 14.06.2017    source источник


Ответы (3)


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

person KelgMak    schedule 14.06.2017
comment
В моем файле routing.yml есть только: app: resource: '@AppBundle/Controller/' type: annotation admin_area: resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml" prefix: /admin _sonata_admin: resource: . type: sonata_admin prefix: /admin - person jpp28; 14.06.2017
comment
Хорошо, я неправильно понял, какой файл соответствует вашему блоку кода выше, это services.yml (в приложении / конфигурации), верно? поэтому вы должны вырезать свой блок category.admin и вставить его в файл, который я упомянул, именно здесь вы должны объявить классы администратора - person KelgMak; 14.06.2017
comment
Да, это файл app/config/service.yml. Но мой проект на самом деле пуст. У меня есть только соната, я просто хочу протестировать ее на пустом проекте, прежде чем использовать ее в реальном проекте. попробую сделать на реальном проекте посмотрим - person jpp28; 14.06.2017

Службы администрирования сонаты должны быть общедоступными. В вашей конфигурации у вас по умолчанию 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 }
person slaci    schedule 23.08.2017

Запустите эту команду на терминале. Потому что вы могли пропустить установку

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

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

// приложение/AppKernel.php

public function registerBundles()
{
    return array(
        // ...
        // set up basic sonata requirements
        // ...
        new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
        // ...
    );
}
person CodeBugs    schedule 23.01.2018