Witam,
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?
<?php echo $view['form']->errors($form) ?> <div>
<?php echo $view['form']->row($form['name'],array( 'label' => false,
'class' => 'name',
'placeholder' => ' ImiÄ'),)) ?>
</div>
<div>
<?php echo $view['form']->row($form['surname'],array( 'label' => false,
'class' => 'surname',
'placeholder' => ' Nazwisko'),)) ?>
</div>
<div>
<?php echo $view['form']->row($form['email'],array( 'label' => false,
'class' => 'email',
'placeholder' => ' Email'),)) ?>
</div>
<div>
<?php echo $view['form']->row($form['subject'],array( 'label' => false,
'class' => 'subject',
'placeholder' => ' Temat'),)) ?>
</div>
<div>
<?php echo $view['form']->row($form['note'],array( 'label' => false,
'class' => 'note',
'placeholder' => ' WiadomoĹÄ...'),
)
) ?>
</div>
<input type="submit" class="btn-form-style" value="WYĹLIJ" ?>"/>
<?php echo $view['form']->end($form) ?>
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())
->setFrom(array($message->getEmail())) ->setTo('.....@gmail.com')
->setBody($message->getNote());
$this->get('mailer')->send($message);
return $this->redirect($this->generateUrl('acme_task_success'));
}
return $this->render('AcmePageBundle:Default:contact.html.php', array( '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
{
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$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
host
: mail.nazwadomeny
.pl
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 ?