2013-08-02 35 views
0

我試圖在我在偵聽器中創建的響應中確保響應是一個json對象的形式(電子郵件)中傳遞的數據。FOSUserBundle從偵聽器中的表單中獲取數據

我不能從「事件中的表單數據以任何方式..

還有就是我想要什麼解決辦法?

public static function getSubscribedEvents() 
{ 
    return array(
     FOSUserEvents::PROFILE_EDIT_SUCCESS => 'onProfileEditSuccess', 
    ); 
} 

public function onProfileEditSuccess(FormEvent $event) 
{ 

    $response = new Response(); 
    $output = array('success' => true, 'new_mail' => $event); //event return empty object 
    $response->headers->set('Content-Type', 'application/json'); 
    $response->setContent(json_encode($output)); 
    $event->setResponse($response); 
} 

我試着聽完COMPLETED事件,但並沒有讓我改變回應!

回答

1

您可以從$event->getForm()PROFILE_EDIT_SUCCESS事件中的$ event對象中獲取表單。

FOS\UserBundle\Controller\ProfileController

$event = new FormEvent($form, $request); 
$dispatcher->dispatch(FOSUserEvents::PROFILE_EDIT_SUCCESS, $event); 

訪問電子郵件

$form = $event->getForm(); 
$email = $form['email']->getData(); 
+0

真的非常感謝你! 我被一個事實誤導了,如果我傳遞了一個'$ event-> getForm()'或甚至'$ event',我總是返回一個空對象! 這甚至現在我不知道給我一個解釋.. – Lughino

+0

什麼你不明白?事件只是一個簡單的對象,它包含來自控制器的數據。您可以修改此數據,例如您可以設置響應,控制器將返回此響應。 –