使用最新的Symfony和FOSUserbundle,成功注册新用户后,用户将自动登录.我想阻止这种情况.我的理由是只有特殊用户才能注册新用户.
我想我必须覆盖bundle的RegisterController中的registerAction,但我不知道如何.
我试过:http://symfony.com/doc/current/bundles/FOSUserBundle/overriding_controllers.html,但似乎已经过时了,没有用这种方法创建用户.
任何提示都表示赞赏.
编辑:
我发现我没有正确创建子包.我还必须创建自己的EventListener.当我覆盖FOSUserEvents::REGISTRATION_SUCCESS事件时,它现在有效.
奇怪的是,当我使用该FOSUserEvents::REGISTRATION_COMPLETED事件时,会调度这两个事件,我的捆绑包和FOSUserbundle,以便用户被重定向到正确的站点,但以新用户身份登录.
编辑2:
所以这是我的倾听者:
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess',
FOSUserEvents::REGISTRATION_COMPLETED => 'onRegistrationCompleted',
);
}
public function onRegistrationSuccess(FormEvent $event)
{
$url = $this->router->generate('admin');
$event->setResponse(new RedirectResponse($url));
}
public function onRegistrationCompleted(FilterUserResponseEvent $event)
{
}
Run Code Online (Sandbox Code Playgroud)
我在REGISTRATION_SUCCESS事件中设置重定向并且REGISTRATION_COMPLETED为空.使用调试器,我可以验证我自己的侦听器的事件是否被调用,但是也调用了原始事件.
我有一个函数,它期望一个字符串作为输入参数:
<?php
declare(strict_types = 1);
function testXml(string $xml) {
echo "this is a string: " .$xml;
}
Run Code Online (Sandbox Code Playgroud)
现在当我向这个函数提供一个对象时,我希望抛出一个Type Error.但事实并非如此,SimpleXmlElement类型的对象被静默转换为字符串:https: //3v4l.org/lQdaZ
这是一个错误还是一个功能?