Php Symfony 2和FOSUserBundle-在注册期间将信息从路径添加到用户

Php Symfony 2和FOSUserBundle-在注册期间将信息从路径添加到用户,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,我有一个使用FOSUserBundle的Symfony 2应用程序。该应用程序将由多个不同组织的成员使用,我希望他们能够访问特定于组织的URL进行注册,例如http://www.myapp.com/[机构名称]/注册。我如何让FOSUserBundle处理注册,同时将[organization\u name]添加到它创建的用户记录中 我的研究表明,我可能需要加入FOSUserBundle事件(注册\成功?),但我不确定具体机制或从URL获取信息 您可以使用GET属性,如下所示: http://w

我有一个使用FOSUserBundle的Symfony 2应用程序。该应用程序将由多个不同组织的成员使用,我希望他们能够访问特定于组织的URL进行注册,例如
http://www.myapp.com/[机构名称]/注册
。我如何让FOSUserBundle处理注册,同时将
[organization\u name]
添加到它创建的用户记录中

我的研究表明,我可能需要加入FOSUserBundle事件(
注册\成功
?),但我不确定具体机制或从URL获取信息


您可以使用
GET
属性,如下所示:

http://www.myapp.com/register?org=acme
namespace Acme\DemoBundle\Event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use FOS\UserBundle\Event\FormEvent;

class EventSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return array(
            'fos_user.registration.success'  => array('onRegistrationSuccess', 10),
        );
    }

    public function onRegistrationSuccess(FormEvent $event)
    {
        $user = $event->getUser();
        $org = $event->getRequest()->query->get('org');
        $user->setOrganisation($org);
    }
}
在本例中,事件订阅服务器将如下所示:

http://www.myapp.com/register?org=acme
namespace Acme\DemoBundle\Event;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use FOS\UserBundle\Event\FormEvent;

class EventSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return array(
            'fos_user.registration.success'  => array('onRegistrationSuccess', 10),
        );
    }

    public function onRegistrationSuccess(FormEvent $event)
    {
        $user = $event->getUser();
        $org = $event->getRequest()->query->get('org');
        $user->setOrganisation($org);
    }
}
不要忘记在
服务中注册您的订户。yml

acme_demo.event_subscriber:
    class: Acme\DemoBundle\Event\EventSubscriber
    tags:
        - { name: kernel.event_subscriber }

非常感谢。其中一个关键要求是URL非常整洁,组织非常突出。是否有一种从
http://www.myapp.com/[组织名称]/register
(而不是您的查询建议)是否从订阅者内部进行?一些研究表明,我可以直接从URL中读取,但最好是预先解析。您的示例的其余部分看起来很完美。对,请仔细研究一下。似乎最好的解决方案是安排我的EventSubscriber也被传递给@router服务,然后让它像平常一样解析URL,吐出参数。@frumious有很多方法可以做到这一点。我只是提出一个想法。因此,您可以根据需要使用它;)