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
+
0
-

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)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Od Nette 2.0 to není onSubmit[] ale onSuccess[].

lukinpark
Člen | 9
+
0
-

vojtech.dobes napsal(a):

Od Nette 2.0 to není onSubmit[] ale onSuccess[].

ani to nefunguje… to jsem zkoušel hned jako první…

Filip Procházka
Moderator | 4668
+
0
-
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
	}


}
lukinpark
Člen | 9
+
0
-

Tak kromě těch trapných chyb to bylo tímto:

$this->template->form = $this['emailToMaklerForm']; // továrničku nevoláme přímo!

Díky moc za pomoc

mkoubik
Člen | 728
+
0
-

Navíc do šablony komponenty předávat nemusíš. Jsou dostupné jako $control['emailToMaklerForm'] (nebo přes makra).

Editoval mkoubik (27. 11. 2012 16:24)