簡體   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