2013-08-01 77 views
1

我使用FOSUser Bundle作爲我自己的User類的基礎類。通過web服務可以創建新用戶。FOSUser Bundle手動觸發確認電子郵件

據我所知,只有當用戶通過註冊表單註冊自己時纔會觸發。

有沒有辦法手動觸發控制器的確認電子郵件?

+0

你嘗試過什麼或者研究的文檔/ github上? –

+0

是的,但似乎沒有觸發器。 –

回答

1

似乎沒有辦法手動觸發確認電子郵件的發送。只有與註冊相結合纔會觸發。我最終做的是僞造一個表單並派發它來觸發負責發送電子郵件的事件監聽器。

//use FOS\UserBundle\FOSUserEvents; 
//use FOS\UserBundle\Event\FormEvent; 

$formFactory = $this->get('fos_user.registration.form.factory'); 
$form = $formFactory->createForm(); 
$form->setData($user); // created user object 
$event = new FormEvent($form, $request); // request of the Controller 
$dispatcher = $this->get('event_dispatcher'); 
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event); 

不是一個真正的乾淨的解決方案,但我唯一可以拿出,作爲FOSUserBundle似乎並沒有提供任何形式的API它。

+0

我正在嘗試做類似於FosUser 1.2.0的操作。 任何想法如何? – xocasdashdash

4

這爲我工作

$mailer = $this->container->get('fos_user.mailer'); 
// Create token 
$token = sha1(uniqid(mt_rand(), true)); // Or whatever you prefer to generate a token 
$user->setConfirmationToken($token); 
$mailer->sendConfirmationEmailMessage($user); 
+0

請糾正第2行缺少結束標記。 – 2013-11-08 13:57:22