我使用FOSUserBundle,我想覆盖他的registerAction控制器。 我读了与重写FOSUserBundle的控制器相关的文档,但它不起作用。通过在控制器中回显一条消息,它不会在模板中打印。Symfony2覆盖控制器
这是我自己选择的方式:我继承了我的包从FOSUserBundle
:
namespace Jheberg\MembersBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class JhebergMembersBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}
而且我在捆的控制器目录中名为RegistrationController.php
文件中覆盖registerAction:
namespace Jheberg\MembersBundle\Controller;
use FOS\UserBundle\Controller\RegistrationController as BaseController;
class RegistrationController extends BaseController
{
public function registerAction()
{
echo 'foo';
$response = parent::registerAction();
// do custom stuff
return $response;
}
}
你有什么解决方案吗?
你不会看到它,你需要添加退出或死亡,即echo'foo'; exit; – Inoryy 2012-04-09 11:31:43
它不起作用,因为Symfony调用FOSUserBundle的registerAction方法,而不是我的。所以,没有echo()和exit()。 – 2012-04-09 11:35:42
删除你自己的bundle'routing.yml'(默认为空)。我使用的是默认值,如果Symfony具有相同的文件名,那么它真的会从'child'包中读取* everything *来代替父对象。 – Tatsh 2016-01-13 09:30:24