【发布时间】:2018-11-02 09:05:10
【问题描述】:
我正在尝试覆盖我的 FOSUserBundle 的注册控制器。 我已按照https://symfony.com/doc/3.4/bundles/inheritance.html 上的步骤操作,但出现以下错误:
无法自动装配服务“AppBundle\Controller\RegistrationController”:方法“FOS\UserBundle\Controller\RegistrationController::__construct()”的参数“$formFactory”引用接口“FOS\UserBundle\Form\Factory\FactoryInterface”但没有存在这样的服务。您可能应该将此接口别名为以下现有服务之一:“fos_user.profile.form.factory”、“fos_user.registration.form.factory”、“fos_user.change_password.form.factory”、“fos_user.resetting.form”。工厂”。
我的 RegistrationController.php :
// src/UserBundle/Controller/RegistrationController.php
namespace AppBundle\Controller;
use FOS\UserBundle\Controller\RegistrationController as BaseController;
use Symfony\Component\HttpFoundation\Request;
class RegistrationController extends BaseController
{
public function registerAction(Request $request)
{
$response = parent::registerAction($request);
// ... do custom stuff
return $response;
}
}
我的 AppBundle.php
<?php
namespace AppBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AppBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}
如果需要更多信息,请告诉我,以便我更新此问题。
【问题讨论】:
-
向您的 services.yaml 文件添加别名(如错误所示)可能会有所帮助。问题是其他 FOS 控制器(配置文件、更改密码等)需要不同的表单工厂。因此,您将需要手动连接依赖项。检查文档中的自动装配部分。正如前面所指出的,捆绑继承正在消失,所以除非你打算无限期地使用 3.4,否则不要使用它。
标签: symfony fosuserbundle autowired symfony-3.4