Při odeslání formuláře se neaktivuje callback
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- lukinpark
- Člen | 9
Zdravím, už to tady hledám asi hodinu, ale žádný ze zdejších
problémů mi nepomohl…
Prostě po odeslání formuláře se nic nestane… Vůbec se nevykoná
emailToMaklerFormSubmitted…
Posílám celý Presenter…
Nette 2.0.6
Už jsem zkoušel tolik věcí, že jsem určitě něco přepsal špatně…
use Nette\Application\UI\Form,
Nette\Mail\Message;
class DetailPresenter extends BasePresenter{
private $nabidky;
private $makleri;
public function startup(){
parent::startup();
$this->template->aktRight = $this->getService('aktuality')->getRight("2");
$this->nabidky = $this->getService('objects');
$this->makleri = $this->getService('users');
$this->template->title = 'Detail nemovitosti';
$this->template->menu1 = true;
}
public function renderDefault($id){
$detail = $this->nabidky->getDetail($id);
$photos = $this->nabidky->getPhotos($id);
$detail['title'] = str_replace('²', '2', $detail['title']);
$this->nabidky->getUrlTitle($id);
$this->template->url = $this->nabidky->getUrl($id);
$this->template->object_id = $this->nabidky->getObjectId($id);
$this->template->title = $detail['title'].' :: Detail nemovitosti';
$this->template->photos = $photos;
$this->template->nem = $detail;
$this->template->form = $this->createComponentEmailToMaklerForm();
}
protected function createComponentEmailToMaklerForm(){
$form = new Form();
$form->addText('jmeno',"Váše jméno:")
->setType('jmeno')
->setRequired('Zadejte prosím jméno');
$form->addText('number',"Váš e-mail:")
->setType('text')
->setRequired('Zadejte prosím e-mail')
->addRule(Form::EMAIL, "Špatný formát emailové adresy");
$form->addText('telefon',"Váš telefon:")
->setType('phone')
->setRequired('Zadejte prosím telefon');
$form->addTextarea('text',"Text zprávy:")
->setRequired('Zadejte prosím text zprávy');
$form->addSubmit('send','Odeslat');
$form->setDefaults(array(
'text' => "Dobrý den,\nměl bych zájem o bližší informace k nemovitosti.",
));
$form->onSubmit[] = $this->emailToMaklerFormSubmitted;
return $form;
}
public function emailToMaklerFormSubmitted(AppForm $form){
$mail = new Message;
$mail->setFrom('info <info@example.cz>')
->addTo('lukinpark@gmail.com')
->setSubject('Dotaz na nemovitost')
->setBody("Dobrý den,\nvaše objednávka byla přijata.")
->send();
$this->redirect('/');
}
}
Editoval lukinpark (27. 11. 2012 14:41)
- Filip Procházka
- Moderator | 4668
use Nette\Application\UI\Form,
Nette\Mail\Message;
class DetailPresenter extends BasePresenter
{
// ...
protected function startup() // metoda má být protected
{
// ...
}
public function renderDefault($id)
{
// ...
$this->template->form = $this['emailToMaklerForm']; // továrničku nevoláme přímo!
}
protected function createComponentEmailToMaklerForm()
{
// ...
$form->onSuccess[] = $this->emailToMaklerFormSubmitted; // success
return $form;
}
public function emailToMaklerFormSubmitted(Form $form) // AppForm je zastaralé
{
// ...
$this->redirect('this'); // takto
}
}