簡體   English   中英

Symfony 2和FOSUserBundle-在注冊過程中從路徑向用戶添加信息

[英]Symfony 2 and FOSUserBundle - add information from path to User during registration

我有一個使用FOSUserBundle的Symfony 2應用程序。 該應用程序將由許多不同組織的成員使用,我希望他們能夠訪問組織特定的URL進行注冊,例如http://www.myapp.com/[organisation_name]/register 如何讓FOSUserBundle處理注冊,又如何將[organisation_name]添加到它創建的用戶記錄中?

我的研究表明,我可能需要加入FOSUserBundle事件( REGISTRATION_SUCCESS嗎?),但是我不確定該事件的確切機制或從URL獲取信息的確切機制。

FOSUserBundle事件

您可以使用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);
    }
}

並且不要忘記在services.yml注冊您的訂戶:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM