Sonata с Symfony3.4 - внедрение зависимостей (правильное объявление службы администрирования Sonata)

Я пытаюсь установить Sonata (sonata-project/admin-bundle) в свой проект symphony 3.4.

К сожалению, у меня ошибка при добавлении первой службы.

services.yaml:

    admin.carrier:
    class: App\Admin\CarrierAdmin
    arguments: [~, App\Entity\Carrier, ~]
    tags:
        - { name: sonata.admin, manager_type: orm, label: Carrier }
    public: true

И ошибка, которую я получаю при доступе к http://localhost/admin/dashboard:

1) FatalThrowableError

Type error: strlen() expects parameter 1 to be string, null given
in AddDependencyCallsCompilerPass.php (line 401)
at strlen(null)in AddDependencyCallsCompilerPass.php (line 401)
at AddDependencyCallsCompilerPass->replaceDefaultArguments(array('admin.carrier', 'SonataAdminBundle:CRUD'), object(Definition), null)in AddDependencyCallsCompilerPass.php (line 67)
at AddDependencyCallsCompilerPass->process(object(ContainerBuilder))in Compiler.php (line 141)
at Compiler->compile(object(ContainerBuilder))in ContainerBuilder.php (line 753)
at ContainerBuilder->compile()in Kernel.php (line 634)
at Kernel->initializeContainer()in Kernel.php (line 137)
at Kernel->boot()in Kernel.php (line 197)
at Kernel->handle(object(Request))in index.php (line 25)

Кто-нибудь может мне помочь?


person Toon    schedule 21.12.2017    source источник
comment
возможно, этот символ ~ не является параметром для вашего сервиса. Это странно.   -  person darkomen    schedule 21.12.2017


Ответы (1)


Прежде всего, это хорошая идея добавить префикс приложения в вашу службу администрирования. Но ваша ошибка в объявлении CRUD-контроллера. Третий аргумент - это CRUD-контроллер для этой службы администрирования. Таким образом, вы должны использовать значение по умолчанию: SonataAdminBundle:CRUD

app.admin.carrier:
    class: App\Admin\CarrierAdmin
    arguments: [~, App\Entity\Carrier, SonataAdminBundle:CRUD]
    tags:
        - { name: sonata.admin, manager_type: orm, group: 'carrier', label_catalogue: "admin", label: 'carrier' }
person staskrak    schedule 21.12.2017
comment
Большое спасибо ! это намного лучше ! Просто другая проблема: Admin service "code" not found in admin pool. Я ищу, как это исправить. - person Toon; 21.12.2017
comment
@Toon, я думаю, что лучше закрыть эту тему и создать другую с полной информацией о проблеме. И отметьте ответ как правильный. - person staskrak; 21.12.2017