Mon*_*ite 3 php symfony fosuserbundle
我正在尝试从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;
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试调用此方法时,我得到:
无法自动装配服务"AppBundle\Service\Register":方法"__construct()"的参数"$ userManager"引用类"FOS\UserBundle\Model\UserManager"但不存在此类服务.您应该将此类别名为现有的"fos_user.user_manager.default"服务.
我现在应该怎么做?
Sam*_*Sam 10
我有一个类似的问题(在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'
Run Code Online (Sandbox Code Playgroud)