- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图覆盖 FosUserBundle 注册表 Controller ,但出现以下错误:
无法 Autowiring 服务“App\Controller\RegistrationController”:方法的参数“$formFactory”
“FOS\UserBundle\Controller\RegistrationController::__construct()”
引用接口(interface)“FOS\UserBundle\Form\Factory\FactoryInterface”但不存在此类服务。
您也许应该将此接口(interface)别名为这些现有服务之一:“fos_user.profile.form.factory”、“fos_user.registration.form.factory”、“fos_user.change_password.form.factory”、
“fos_user.resetting.form.factory”。您是否创建了一个实现此接口(interface)的类?
我正在使用 Symfony4,这是我的 RegistrationController.php
代码。我尝试了多种方法,但找不到一种方法让它发挥作用。
class RegistrationController extends BaseController
{
public function registerAction(Request $request)
{
$form = $this->get('fos_user.registration.form.factory');
$formHandler = $this->get('fos_user.registration.form.handler');
$confirmationEnabled = $this->getParameter('fos_user.registration.confirmation.enabled');
die("Hello");
$process = $formHandler->process($confirmationEnabled);
if ($process) {
$user = $form->getData();
if ($confirmationEnabled) {
$this->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
$route = 'fos_user_registration_check_email';
} else {
// $this->authenticateUser($user);
$route = 'users_edit';
}
$this->setFlash('fos_user_success', 'registration.flash.user_created');
$url = $this->get('router')->generate($route, array("id" => $user->id));
return new RedirectResponse($url);
}
return $this->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.twig', array(
'form' => $form->createView()
));
}
}
?>
最佳答案
我遇到了同样的问题,SF4 和 FOSUserBundle。环顾了半天后,我提出了解决方案。我使用了@thibaut 的一些 Material 并将其改编为 SF 4.2。
我注入(inject)fos用户注册controlleur需要的服务,给FOS\UserBundle\Form\Factory\FactoryInterface取个别名
配置/服务.yaml
app.controller.register:
class: App\Controller\bundles\FOSUserBundle\RegistrationController
arguments:
$eventDispatcher: '@event_dispatcher'
$formFactory: '@fos_user.registration.form.factory'
$userManager: '@fos_user.user_manager'
$tokenStorage: 'security.token_storage'
calls:
- method: setContainer
arguments:
- '@service_container'
public: true
FOS\UserBundle\Form\Factory\FactoryInterface:
alias: 'fos_user.registration.form.factory'
public: true
然后在我的注册 Controller 中,我重新声明一个构造函数并保存要在 Controller 中使用的 formfactory
App\Controller\bundles\FOSUserBundle
protected $formFactory;
public function __construct(EventDispatcherInterface $eventDispatcher, FactoryInterface $formFactory, UserManagerInterface $userManager, TokenStorageInterface $tokenStorage, $serviceContainer=null)
{
$this->setContainer($serviceContainer);
$this->formFactory = $formFactory;
parent::__construct($eventDispatcher, $formFactory, $userManager, $tokenStorage);
}
在我的操作中使用 declare $formfactory
/**
* @Route("/register", name="registration")
*/
public function registerAction(Request $request)
{
/** @var $formFactory FactoryInterface */
$formFactory = $this->formFactory;
/** @var $userManager UserManagerInterface */
$userManager = $this->get('fos_user.user_manager');
/** @var $dispatcher EventDispatcherInterface */
$dispatcher = $this->get('event_dispatcher');
希望对大家也有帮助
关于symfony - 用 fosuser 覆盖注册 Controller 无法 Autowiring 服务 "App\Controller\RegistrationController",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590862/
我是 symfony 新用户。今天我将 symfony 更新到了 3.4 版本。我已经安装了 friendsofsymfony/user-bundle "~2.0@dev"。 当我进入注册页面http
我试图覆盖我的设计注册 Controller ,但没有运气。 我终于让路线工作了,但现在我得到了 superclass mismatch for class错误。 这是我的设置: 注册 Control
我试图覆盖 FosUserBundle 注册表 Controller ,但出现以下错误: 无法 Autowiring 服务“App\Controller\RegistrationController”
我是一名优秀的程序员,十分优秀!