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 варианта:
- Уточнить
public: true
для службы администратора (в вашем примере файла) - Или лучший способ: создайте новый файл служб (например, 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(),
// ...
);
}