【问题标题】:Symfony FOSUserBundleSymfony FOSUserBundle
【发布时间】:2018-09-29 21:17:47
【问题描述】:

我正在尝试重新声明 FOSUserBundle ProfileController,但是当我这样做时,没有任何变化。我已按照指令https://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html 并创建: /src/UserBundle/UserBundle.php

    <?php

namespace UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class UserBundle extends Bundle
{
  public function getParent()
  {
    return 'FOSUserBundle';
  }
}

和 /src/UserBundle/Controller/ProfileController.php

<?php
namespace UserBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use FOS\UserBundle\Controller\ProfileController as BaseController;


class ProfileController extends BaseController
{
  public function editAction(Request $request)
  {
    var_dump("I am HERE");exit();

    return $request;
  }
}

我做错了什么,有人能给点建议吗?

【问题讨论】:

标签: php symfony fosuserbundle


【解决方案1】:

在 Symfony 3 中,您不再使用包继承,正如 @Pavel Alzankin 已经指出的那样。 要覆盖 FOSUser 控制器,您需要:

  1. 删除 USerBundle 中的 getParent() 函数
  2. 找出 FOSUserBundle here 使用了哪些路由并在您的控制器中覆盖它们
<?php namespace UserBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use FOS\UserBundle\Controller\ProfileController as BaseController;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use FOS\UserBundle\Form\Factory\FactoryInterface;
use FOS\UserBundle\Model\UserManagerInterface;

class ProfileController extends BaseController {

 public function __construct(EventDispatcherInterface $eventDispatcher,
     FactoryInterface $formFactory, UserManagerInterface $userManager)
 {
     parent::__construct($eventDispatcher, $formFactory, $userManager);
 }

/**
 * override FOSUserBundle
 * @param Request $request
 *
 * @Route(
 *      "/login",
 *      name="fos_user_profile_edit"
 *  )
 * @Method("GET|POST")
 *
 * @return Response
 */
 public function editAction(Request $request)
 {
    var_dump("I am HERE");exit();

    return $request;
}

【讨论】:

  • 使用你的我得到这个错误:“函数 FOS\UserBundle\Controller\ProfileController::__construct() 的参数太少,在 /var/www/webapp/vendor/symfony/symfony/ 中传递了 0 src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php 位于第 195 行,预计正好是 3。”如果我按照@Pavel 的建议将其重新定义为服务,那么它的唯一工作方式是获取所有 3 个构造参数,但是如何使用您的方法获取它们?
猜你喜欢
  • 2018-05-30
  • 2016-03-23
  • 2014-07-11
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
相关资源
最近更新 更多