2016-07-11 126 views
0

我有一個只適用於管理員的表單。管理員可以使用默認密碼1234添加用戶。我也希望在成功創建後向添加的用戶發送電子郵件。一切工作正常,除了快速郵件部分控制器。發送表單調試欄後,不會顯示發送的任何電子郵件。如果我把這部分放在if語句之外,它可以正常工作,我可以在調試欄中看到電子郵件。但是,if語句中的所有其他部分都可以正常工作。迅捷郵件不會發送郵件

這是我的方法;

/** 
* @Route("/add-user", name="adduser") 
*/ 
public function addUserAction(Request $request){ 
    $user = new User(); 
    $addform = $this->createForm(NewUserType::class,$user); 
    $addform->handleRequest($request); 
    if ($addform->isSubmitted() && $addform->isValid()) { 
     $user->setRoles(array('ROLE_USER')); 
     $password = $this->get('security.password_encoder') 
      ->encodePassword($user, $user->getPlainPassword()); 
     $user->setPassword($password); 
     $cellphone = $addform->get('cellphone')->getData(); 
     $ccode = $addform->get('ccode')->getData(); 
     $cellphone = preg_replace("/[^0-9A-Za-z]/", "", $cellphone); 
     $user->setCcode($ccode); 
     $user->setCellphone($cellphone); 
     $user->setPlainPassword(1234); 
     $user->setPassword(md5(1234)); 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($user); 
     $em->flush(); 

     $this->addFlash(
      'addeduser', 
      'You successfully added a user to the database' 
     ); 

     $emailMessage = \Swift_Message::newInstance() 
      ->setSubject('You have successfully signed up') 
      ->setFrom('[email protected]') 
      ->setTo($user->getUsername()) 
      ->setBody($this->renderView(':emails:addeduser.html.twig')); 
     $this->get('mailer')->send($emailMessage); 

     return $this->redirect($this->generateUrl('adduser')); 

    } 

    else{ 
      $this->addFlash(
       'addusererror', 
       'Oops! There was an error!' 
      ); 
     } 

    return $this->render(':user:adduser.html.twig', array('addform'=>$addform->createView())); 
    } 
+0

不起作用**如何**? –

+0

究竟發生了什麼?你有錯誤還是什麼? –

+0

對不起,沒有提及。我也編輯了這個問題。問題是,當我提交表單時,如果if語句中的swiftmailer沒有任何反應。調試欄不顯示任何內容。但是,如果我將swiftmailer從if語句中取出,那麼調試欄會按照它應有的方式顯示電子郵件。 – mburakergenc

回答

1

如果你發送一封電子郵件,然後立即重定向到另一個頁面(這是你的情況),網頁調試工具將不會顯示電子郵件圖標或下頁的報告。

相反,你可以設置intercept_redirects選項trueconfig_dev.yml文件,這將導致重定向停下來,讓您與發送的電子郵件的詳細信息,打開報表。

# app/config/config_dev.yml 
web_profiler: 
    intercept_redirects: true 

查看更多的在documentation