【问题标题】:SonataAdmin Install issueSonataAdmin 安装问题
【发布时间】:2017-11-16 13:13:53
【问题描述】:

我试图在我的 Symfony 项目上安装 SonataAdmin,但在文档的第 2 部分结束时,当我尝试继续“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'

`

缩进出错了我给你加一张这个文件的图片。 Service code

【问题讨论】:

    标签: symfony sonata-admin symfony-sonata symfony-3.2


    【解决方案1】:

    在终端上运行此命令。因为你可能错过了安装

    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(),
            // ...
        );
    }
    

    【讨论】:

      【解决方案2】:

      奏鸣曲管理服务必须是公开的。在您的配置中,您的默认值为 public: false,这就是您收到此错误的原因。

      所以你有两个选择:

      1. 为您的管理服务指定public: true(在您的示例文件中)
      2. 或者更好的方法:创建一个不使用这些默认值的新服务文件(例如 admin.yml)(_defaults 键和public: false)。 Public 默认为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 }
      

      【讨论】:

        【解决方案3】:

        我认为您将category.admin 服务写入:Sonata/app/config/routing.yml 是一个错误, 而不是 Sonata/src/YourAdminBundle/Resources/config/services.yml

        【讨论】:

        • 在我的 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
        • 好吧,我误解了哪个文件与您上面的代码块匹配,它是 services.yml(在 app/config 中)对吗?所以你应该剪切你的category.admin 块并将其粘贴到我提到的文件中,这就是你必须声明管理类的地方
        • 是的,它是 app/config/service.yml 文件。但我的项目实际上是空的。我只有奏鸣曲,我只是想在一个空的项目上测试它,然后再在一个真正的项目上使用它。我将尝试在我们将看到的真实项目中做到这一点
        猜你喜欢
        • 2021-03-25
        • 2021-05-31
        • 2016-12-13
        • 1970-01-01
        • 2012-05-07
        • 1970-01-01
        • 1970-01-01
        • 2016-01-28
        • 2013-04-03
        相关资源
        最近更新 更多