小编dev*_*ev0的帖子

在Symfony的FOSUserbundle中注册后禁用自动登录

使用最新的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 symfony fosuserbundle

6
推荐指数
1
解决办法
3194
查看次数

PHP 7严格类型对象到字符串转换

我有一个函数,它期望一个字符串作为输入参数:

<?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

这是一个错误还是一个功能?

php

3
推荐指数
1
解决办法
419
查看次数

标签 统计

php ×2

fosuserbundle ×1

symfony ×1