簡體   English   中英

無法自動服務

[英]Cannot autowire service

我正在嘗試從FOSUserBundle(Symfony3.4)實現UserManager。

服務/ Register.php

<?php

namespace AppBundle\Service;

use FOS\UserBundle\Model\UserManager;


class Register
{
    private $userManager;

    public function __construct(UserManager $userManager)
    {
        $this->userManager = $userManager;
    }

    public function register() {
        $user = $this->userManager->findUserByUsernameOrEmail('aaa@gmail.clom');
        if($user){
            return false;
        }
        return true;
    }
}

當我嘗試調用此方法時,我得到:

無法自動裝配服務“AppBundle \\ Service \\ Register”:方法“__construct()”的參數“$ userManager”引用類“FOS \\ UserBundle \\ Model \\ UserManager”但不存在此類服務。 您應該將此類別名為現有的“fos_user.user_manager.default”服務。

我現在應該怎么辦?

我有一個類似的問題(在Symfony 4中,但原則應該適用於3.4)使用不同的服務並設法在Symfony doc頁面上自動定義服務依賴項(自動裝配)找到答案。

這是該頁面的摘錄:

配置自動裝配的主要方法是創建一個id與其類完全匹配的服務。 在前面的示例中,服務的id是AppBundle\\Util\\Rot13Transformer ,它允許我們自動自動裝配此類型。

這也可以使用別名來完成。

您需要別名,因為服務ID與類名不匹配。 這樣做:

# app/config/services.yml
services:
    # ...

    # the `fos_user.user_manager.default` service will be injected when
    # a `FOS\UserBundle\Model\UserManager` type-hint is detected
    FOS\UserBundle\Model\UserManager: '@fos_user.user_manager.default'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM