Odeslní Form a zavolání callback nejde …

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

Zdravím netuší proč mě nejde callback funkce (nezavolá se funkce formSubmit) používám Nette 2.0 beta:

class HousePresenter extends BasePresenter
{


   function createComponentAddHouse()  {

      $form = new \Nette\Forms\Form;
      $form ->addText('name', 'Název domu (nadpis): ')->setRequired();
      $form ->addTextArea('textHouse', 'Popis domu:', 67 , 5)->setRequired();
      $form ->addSubmit('send', 'Založit dům >>>');
      $form->onSubmit[] =  callback($this, 'formSubmit');
      return $form;

    }


    function formSubmit($form) {
        echo 'zavolano formSubmit';
        $values = $form->getValues();
        dump($values);

    }}

Netuší někdo včem je problém s Nette začínám a žádnou chybu nette nehlásí …

_Martin_
Generous Backer | 679
+
0
-

Pro spolupráci s presenery je třeba používat upravený formulář, tedy \Nette\Application\UI\Form. Mimochodem, je to v dokumentaci ;)

22
Člen | 1478
+
0
-

a možná by nebylo od věci ten form připojit ke stromu komponent..

_Martin_
Generous Backer | 679
+
0
-

@22: Není třeba, správně používá továrničku, takže připojení za něj Nette provede samo.

breeta
Člen | 68
+
0
-

_Martin_ dík pomohlo …

22
Člen | 1478
+
0
-

pak by měl něko toto smazat/upravit asi https://doc.nette.org/…ubleshooting#…

Editoval 22 (8. 6. 2011 10:22)

_Martin_
Generous Backer | 679
+
0
-

Problém je v tom, že oba dva způsoby jsou správné. A správná by byla i kombinace, tedy připojit formulář do stromu a pak ho vrátit. Těžko říct, který způsob doporučit. Osobně se kloním k tomu s vracením, neboť znamená méně psaní=)

22
Člen | 1478
+
0
-

no už se to tu diskutovalo parkrát, ten způsob, co je tam uvedený attachne komponentu ihned imho a bez uvedení $name a prametrů v konstruktoru, až po zavolání komponenty, nevím, jestli se něco změnilo nebo return to attachne taky?

Editoval 22 (8. 6. 2011 11:18)

_Martin_
Generous Backer | 679
+
0
-

V tom připojení přímo máš pravdu, ale z pohledu člověka pracujícího s komponentovým stromem je to jedno – ke komponentě se nedostaneš jinak, než metodou getComponent. A ta ti komponentu vrátí vždy jako součást stromu a je ti pak jedno, v jakém okamžiku během svého vytváření se připojila.

bojovyletoun
Člen | 667
+
0
-

Preferuji druhý způsob. Je to méně psaní, tedy menší možnost chyby a navíc lze změnit Metodu GET/POST.( tu lze změnit, doku je form nepřipojený) – https://api.nette.org/…orm.php.html#195

22
Člen | 1478
+
0
-

ovšem není pak problém s voláním přes $this['componentName']?

edit: něco je i tady k tomu..

Editoval 22 (8. 6. 2011 11:45)

_Martin_
Generous Backer | 679
+
0
-

Není problém, $this['componentName'] je zkratka pro $this->getCompononent('componentName'). Těžko říct, co těmi „problémy“ bylo myšleno. Formuláře tak používám a fungují + jak psal bojovyletoun.

22
Člen | 1478
+
0
-

tak nakonec se zdá, že to použití je na místě kvůli komponentě samotné, viz. diskuse tady , u formu na tom asi nesejde, ale pro ostatní komponety je zápís s paramatry správná volba.

_Martin_
Generous Backer | 679
+
0
-

Zareagoval jsem v odkazovaném vlákně. Nicméně si myslím, že by bylo dobré, aby někdo specifikoval, co je best practice či jak to bylo zamýšleno – 2 různé přístupy s malinko odlišným chováním jsou zbytečně matoucí.