2016-07-11 2 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

не работает ** HOW **? –

+0

Что именно происходит? У вас есть ошибка или что? –

+0

Извините, что не упоминал об этом. Я также отредактировал этот вопрос. Проблема в том, что когда я отправляю форму, если инструкция swiftmailer в if, ничего не происходит. Отладочная панель ничего не показывает. Однако, если я беру swiftmailer из инструкции if, на панели отладки отображается электронное письмо, как предполагалось. – mburakergenc

ответ

1

Если вы посылаете по электронной почте, а затем сразу же перенаправляет на другую страницу (, который ваш случай), панель инструментов веб-отладки не будет отображаться значок электронной почты или отчет на следующей странице.

Вместо этого, вы можете установить intercept_redirects опции true в файле config_dev.yml, что приведет к редиректу, чтобы остановиться и позволить вам открыть отчет с подробной информацией о присланных письмах.

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

Подробнее см. В documentation.

 Смежные вопросы

  • Нет связанных вопросов^_^