neplatne spracovanie signalu z formu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
japlavaren
Člen | 404
+
0
-

Dobry vecer,

mam komponentu v ktorej vytvaram form, bohuzial nefunguje spracovanie formularu po odoslani. hadze to The signal receiver component ‚search-Search‘ is not found a neviem prist na to preco :(

BasePresenter – definicia komponenty

<?php
function createComponentSearch($name)
	{
		$search = new Search($this, $name);

		return $search;
	}
?>

Search – komponenta

<?php
class Search extends NControl
{
	public $defaults = array();

	function render()
	{
		$form = new NAppForm($this, __CLASS__);
		$form->onSubmit[] = array($this, "SearchSubmitted");

		$this->template->form = $form;
		$this->template->setFile(dirname(__FILE__) . '/template.latte');
		$this->template->render();
	}

	function SearchSubmitted(NAppForm $form)
	{
		Ndebug->dump($form->getValues());
	}
}
?>

dakujem moc

Aurielle
Člen | 1281
+
0
-

Jakoukoliv komponentu uvnitř jiné komponenty bys měl ideálně taky vytvářet pomocí továrniček. Ve fázi render (stejně jako v Presenteru) je už pozdě.

kravčo
Člen | 721
+
0
-

potrebuješ továrničku aj v komponente (na formulár):

BasePresenter.php

class SomePresenter
{
    public function createComponentSearch()
    {
	return new Search;
    }
}

SearchControl.php

class Search
{
    public function createComponentSearch()
    {
        $form = new NAppForm;
        $form->onSubmit[] = callback($this, 'searchSubmitted');
        return $form;
    }

    public function render()
    {
        $this->template->setFile(dirname(__FILE__) . '/template.latte');
        $this->template->render();
    }
}

V templejte controlu form vyrenderuješ pomocou {control search}, nepotrebuješ formulár pridávať do templejty…