Mam problem z wysyłaniem danych z formularza na konto pocztowe przy pomocy Swiftmailera.
Formularz widok:
<h2>Formularz Kontaktowy</h2> <?php echo $view['form']->start($form)?> // Nie używam tutaj przykładowo <form action = "{{path('success') }}" method="POST". Jak wskazać namiar na akcję kontrolera // po wysłaniu formularza? <div> 'label' => false, 'class' => 'name', 'placeholder' => ' ImiÄ'),)) ?> </div> <div> 'label' => false, 'class' => 'surname', 'placeholder' => ' Nazwisko'),)) ?> </div> <div> 'label' => false, 'class' => 'email', 'placeholder' => ' Email'),)) ?> </div> <div> 'label' => false, 'class' => 'subject', 'placeholder' => ' Temat'),)) ?> </div> <div> 'label' => false, 'class' => 'note', 'placeholder' => ' WiadomoĹÄ...'), ) ) ?> </div> <input type="submit" class="btn-form-style" value="WYĹLIJ" ?>"/>
Message.php
<?php
// src/Acme/PageBundle/Entity/Message.php
namespace Acme\PageBundle\Entity;
class Message { protected $name; protected $surname; protected $email; protected $subject; protected $note; public function getMessage() { return $this->message; } public function setMessage($message) { $this->message = $message; } public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } public function getSurname() { return $this->surname; } public function setSurname($surname) { $this->surname = $surname; } public function getEmail() { return $this->email; } public function setEmail($email) { $this->email = $email; } public function getSubject() { return $this->subject; } public function setSubject($subject) { $this->subject = $subject; } public function getNote() { return $this->note; } public function setNote($note) { $this->note = $note; } } ?>
Controller
public function contactAction(Request $request) { $message = new Message(); $form = $this->createForm(new ContactType(),$message); if ($form->isValid()) { // Moge zastosować tu taki warunek? $message = \Swift_Message::newInstance() ->setSubject($message->getSubject()) ->setTo('.....@gmail.com') ->setBody($message->getNote()); $this->get('mailer')->send($message); return $this->redirect($this->generateUrl('acme_task_success')); } 'form' => $form->createView(), )); }
Budowanie formularza
<?php
// src/Acme/PageBundle/Form/Type/ContactType.php
namespace Acme\PageBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class ContactType extends AbstractType { { $builder ->add('name','text') ->add('surname','text') ->add('email','email') ->add('subject','text') ->add('note','textarea'); } public function getName() { return 'name'; } }
routing.yml
acme_task_success: path: /homepage/ defaults: { _controller: AcmePageBundle:Default:homepage }
Całość niestety nie działa. Po wypełnieniu pól oraz wysłaniu formularza, następuje przekierowanie na tą samą stronę, a mail nie dociera do odbiorcy.
Prośba o wsparcie w tym temacie.
Jeszcze:
# Swiftmailer Configuration swiftmailer: transport: smtp username: kontakt.nazwadomeny.pl password: haslo spool: { type: memory }
Na gmailu, localhoście, wszystko chodziło jak należy.
Ten warunek
if ($form->isValid()) {
nie działa.
Może po kolei uda mi sie rozwiązac z Waszą pomoca ten problem.
Więc krok po kroku ...
Po wywołaniu akcji send na formularzu, jak powinienem poprawnie przekazać jego dane do kontrolera a konkretnie akcji contactAction ?