Я полагаю, что название говорит все. Форма отображается как должна, но все началось, когда я решил написать InputFilter
для нее. Форма все еще отображается, но, конечно, мне пришлось что-то адаптировать. Теперь, однако, запрос POST отправляется (согласен Firebug), метод getPost()
возвращает false.
Действие (в контроллере):
public function contactAction () { $form = new ContactForm(); $request = $this->getRequest(); if ($request->isPost()) { $vm = new ViewModel(); $vm->setTerminal(true); $form->setData($request->getPost()); if($form->isValid()) { $to = ""; $from = $request->getPost("email"); $name = $request->getPost("nome"); $subject = "Message sent by ".$name." (phone ".$request->getPost("phone").")"; $body = $request->getPost("message"); $mail = new SendEMail($to, $from, $subject, $body); if (!$mail) { $vm->setVariables(array( "result" => "Error while sending. Retry." )); return $vm; } else { $vm->setVariables(array( "result" => "Thank you! We'll answer as soon as possible." )); return $vm; } } else { $vm->setVariables(array( "result" => "Some fields aren't properly fullfilled." )); return $vm; } } else { return new ViewModel(array ( "welcome" => $this->homeService->findText(), "form" => $form, )); } }
-public function contactAction () { $form = new ContactForm(); $request = $this->getRequest(); if ($request->isPost()) { $vm = new ViewModel(); $vm->setTerminal(true); $form->setData($request->getPost()); if($form->isValid()) { $to = ""; $from = $request->getPost("email"); $name = $request->getPost("nome"); $subject = "Message sent by ".$name." (phone ".$request->getPost("phone").")"; $body = $request->getPost("message"); $mail = new SendEMail($to, $from, $subject, $body); if (!$mail) { $vm->setVariables(array( "result" => "Error while sending. Retry." )); return $vm; } else { $vm->setVariables(array( "result" => "Thank you! We'll answer as soon as possible." )); return $vm; } } else { $vm->setVariables(array( "result" => "Some fields aren't properly fullfilled." )); return $vm; } } else { return new ViewModel(array ( "welcome" => $this->homeService->findText(), "form" => $form, )); } }
-public function contactAction () { $form = new ContactForm(); $request = $this->getRequest(); if ($request->isPost()) { $vm = new ViewModel(); $vm->setTerminal(true); $form->setData($request->getPost()); if($form->isValid()) { $to = ""; $from = $request->getPost("email"); $name = $request->getPost("nome"); $subject = "Message sent by ".$name." (phone ".$request->getPost("phone").")"; $body = $request->getPost("message"); $mail = new SendEMail($to, $from, $subject, $body); if (!$mail) { $vm->setVariables(array( "result" => "Error while sending. Retry." )); return $vm; } else { $vm->setVariables(array( "result" => "Thank you! We'll answer as soon as possible." )); return $vm; } } else { $vm->setVariables(array( "result" => "Some fields aren't properly fullfilled." )); return $vm; } } else { return new ViewModel(array ( "welcome" => $this->homeService->findText(), "form" => $form, )); } }
-public function contactAction () { $form = new ContactForm(); $request = $this->getRequest(); if ($request->isPost()) { $vm = new ViewModel(); $vm->setTerminal(true); $form->setData($request->getPost()); if($form->isValid()) { $to = ""; $from = $request->getPost("email"); $name = $request->getPost("nome"); $subject = "Message sent by ".$name." (phone ".$request->getPost("phone").")"; $body = $request->getPost("message"); $mail = new SendEMail($to, $from, $subject, $body); if (!$mail) { $vm->setVariables(array( "result" => "Error while sending. Retry." )); return $vm; } else { $vm->setVariables(array( "result" => "Thank you! We'll answer as soon as possible." )); return $vm; } } else { $vm->setVariables(array( "result" => "Some fields aren't properly fullfilled." )); return $vm; } } else { return new ViewModel(array ( "welcome" => $this->homeService->findText(), "form" => $form, )); } }
-public function contactAction () { $form = new ContactForm(); $request = $this->getRequest(); if ($request->isPost()) { $vm = new ViewModel(); $vm->setTerminal(true); $form->setData($request->getPost()); if($form->isValid()) { $to = ""; $from = $request->getPost("email"); $name = $request->getPost("nome"); $subject = "Message sent by ".$name." (phone ".$request->getPost("phone").")"; $body = $request->getPost("message"); $mail = new SendEMail($to, $from, $subject, $body); if (!$mail) { $vm->setVariables(array( "result" => "Error while sending. Retry." )); return $vm; } else { $vm->setVariables(array( "result" => "Thank you! We'll answer as soon as possible." )); return $vm; } } else { $vm->setVariables(array( "result" => "Some fields aren't properly fullfilled." )); return $vm; } } else { return new ViewModel(array ( "welcome" => $this->homeService->findText(), "form" => $form, )); } }
Класс формы:
<?php namespace Site\Form; use Zend\Form\Form; use Zend\Form\Element; class ContactForm extends Form { public function __construct($name=null, $options=array ()) { parent::__construct ($name, $options); $this->setAttributes(array( "action" => "./", )); $nameInput = new Element\Text("nome"); $nameInput->setAttributes(array( "placeholder" => "Nome e cognome", "tabindex" => "1" )); $this->add($nameInput); $emailInput = new Element\Text("email"); $emailInput->setAttributes(array( "placeholder" => "Indirizzo e-mail", "tabindex" => "2" )); $this->add($emailInput); $phoneInput = new Element\Text("phone"); $phoneInput->setAttributes(array( "placeholder" => "Numero di telefono", "tabindex" => "3", )); $this->add($phoneInput); $messageArea = new Element\Textarea("messaggio"); $messageArea->setAttributes(array( "placeholder" => "Scrivi il tuo messaggio", "tabindex" => "4" )); $this->add($messageArea); $submitButton = new Element\Button("submit"); $submitButton ->setLabel("Invia messaggio") ->setAttributes(array( "type" => "submit" )); $this->add($submitButton); $resetButton = new Element\Button("reset"); $resetButton ->setLabel("Cancella") ->setAttributes(array( "type" => "reset" )); $this->add($resetButton); $this->setInputFilter(new ContactInputFilter()); } } ?>
Класс InputFilter:
<?php namespace Site\Form; use Zend\InputFilter\InputFilter; use Zend\InputFilter\Input; use Zend\Validator; class ContactInputFilter extends InputFilter { public function init() { $nome = new Input("nome"); $nome->getValidatorChain() ->attach(new Validator\StringLength(3)); $email = new Input("email"); $email->getValidatorChain() ->attach(new Validator\EmailAddress()); $phone = new Input("phone"); $phone->getValidatorChain() ->attach(new Zend\I18n\Validator\PhoneNumber()); $message = new Input("message"); $phone->getValidatorChain() ->attach(new Validator\StringLength(10)); $this->add($nome) ->add($email) ->add($phone) ->add($message); } } ?>
Документация не так полезна, и похожие потоки вокруг здесь выглядят так, будто у вас другая проблема (чего у меня нет). Есть идеи? Спасибо.
РЕДАКТИРОВАТЬ
После выполнения var_dump ($ request-> isPost ()) я заметил, что он возвращает true, если он получает данные post. Тогда я не знаю, что на самом деле происходит сейчас.