我使用FOSUserBundle,我想覆盖他的registerAction控制器。 我阅读了与覆盖FOSUserBundle控制器相关的文档,但它不起作用。通过在控制器中回显一条消息,它不会在模板中打印。
这是我选择的方式:
我从FOSUserBundle继承了我的包:
namespace Jheberg\MembersBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class JhebergMembersBundle extends Bundle
{
public function getParent()
{
return 'FOSUserBundle';
}
}
我在我的bundle的控制器目录中覆盖了名为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;
}
}
你有解决方案吗?
答案 0 :(得分:3)
花了好几个小时试图让这个工作,并最终弄清楚了。我缺少的部分是使用MyUserBundle中的User实体扩展我的User类。例如:
namespace MyNamespace\MyMainBundle\Entity;
use MyNamespace\MyUserBundle\Entity\User as BaseUser;
class User extends BaseUser
{
}
User实体与FOSUserBundle中的实体相同(只是具有不同的命名空间)。
namespace MyNamespace\MyUserBundle\Entity;
use FOS\UserBundle\Model\User as AbstractUser;
abstract class User extends AbstractUser
{
}
如果我没有这样做,正如Jeffrey所说,MyUserBundle根本就没用过(好像它根本不存在)。现在我正在使用所有被覆盖的视图,控制器等。希望这会有所帮助。
答案 1 :(得分:1)
它对我不起作用。我试着做你的解决方案。最后我只是清除缓存runnig php bin / console cache:当然清楚我的proyect内部。和func一样魅力。
所以..尝试清除缓存。
抱歉我的英语不好。