繁体   English   中英

Symfony3.4:试图调用 class “Symfony\Component\DependencyInjection\ServiceLocator”的名为“getParameter”的未定义方法

[英]Symfony3.4: Attempted to call an undefined method named “getParameter” of class “Symfony\Component\DependencyInjection\ServiceLocator”

在 Symfony3.4 中,支持自动布线时出现以下错误。
即使移除容器也会出现以下错误,只需更改 class。
由于另一个错误,我将controller更改为抽象controller,所以我想尽可能使用抽象controller。
有什么我忘记了吗?

https://symfony.com/doc/3.4/service_container/3.3-di-changes.html

错误

Attempted to call an undefined method named "getParameter" of class "Symfony\Component\DependencyInjection\ServiceLocator".

Controller.php

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class DefaultController extends AbstractController
{
    /**
     * @param KeepRequestService $keepRequestService
     * @return array
     */
    private function getKeepRequestSummary(KeepRequestService $keepRequestService): array
    {
        $summary = array();
        
        //Error line        
        foreach (array_keys($this->container->getParameter('keep_request_status')) as $status) {

            $params = array('status' => $status);
            $summary[$status] = $keepRequestService->countKeepRequestBySearchParams($params);
        }
        return $summary;
    }

服务.yml

    _defaults:
        autowire: true
        autoconfigure: true
        public: false

    App\:
        resource: '../../src/*'
        exclude: '../../src/{Ahi/Sp/AdminBundle/Model/Entity, Ahi/Sp/AdminBundle/Model/Repository, Ahi/Sp/AdminBundle/Resources/public/uploadify, Ahi/Sp/AdminBundle/Ahi/Sp/PublicBundle/ }'

    App\Ahi\Sp\AdminBundle\Controller\:
        resource: '../../src/Ahi/Sp/AdminBundle/Controller'
        public: true
        tags: ['controller.service_arguments']

正如 Vyctorya 建议的那样,我将代码修改如下,代码消失了。

Controller.php

    /**
     * @var array
     */
    private $keepRequestStatus;

    public function __construct(array $keepRequestStatus)
    {
        $this->keepRequestStatus = $keepRequestStatus;
    }
   private function getKeepRequestSummary(KeepRequestService $keepRequestService)
    {
        $summary = array();
        foreach (array_keys($this->keepRequestStatus) as $status) {
            $params = array('status' => $status);
            $summary[$status] = $keepRequestService->countKeepRequestBySearchParams($params);
        }
        return $summary;
    }

服务.yml

services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false
        bind:
          $keepRequestStatus: '%keep_request_status%'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM