nejlepsi zpusob jak sdilet form s co nejmin psanim?

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

Ahojte,

ucim se nette a snazim se zjistit jak udelat nasledujici vec

mam web rozdeleny na par presenterov,
v @layout.latte mam {control someForm}

ale nelibi se mi myslenka ze bych v kazdem presenteru mel psat stejny kod, tak jsem si precetl toto: https://doc.nette.org/cs/forms#…
https://www.youtube.com/watch?…

ale to se mi nelibi protoze sice mi to zkrati psani kodu ale stejnak to musim psat do kazdeho presenteru.
co by se mi libilo, by bylo aby {control someForm} volalo primo komponentu aniz bych musel cokoliv psat do patricnych presenteru

a snazil jsem se to udelat nejak takto…

v @layout.latte sem to zmenil na {control some}

-- app/components/some.php

<?php

use Nette\Application\UI,
    Nette\ComponentModel\IContainer;

class someControl extends UI\Control
{
        public function createComponentSomeForm()
        {
                $form = new Nette\Application\UI\Form;
		//...
	        $form->onSuccess[] = $this->submitted;
                return $form;
        }


        public function submitted($form, $values)
        {
		// do stuff
	}
        public function render()
        {
                $this->template->setFile(__DIR__."/SomeForm.latte")
                $this->template->render();
        }
}
?>

-- app/components/SomeForm.latte obsahuje samotny form
{control SomeForm}

ale to nefunguje :/ s chybovou hlaskou: Component with name ‚some‘ does not exist.
otazka zni jak na to a jestli je to dobra cesta.

diky za pomoc

David Matějka
Moderator | 6445
+
+4
-

„magicke“ vytvareni komponent prinasi bezpecnosti diru. Pomoci

http://example.com/?do=someComponent-submit

se necha inicializovat komponenta. Kdyby to bylo magicke, mohl by utocnik inicializovat (jakoukoliv) tridu. Proto se do presenteru davaji createComponent* metody. Pokud mas vsak ty same v kazdem presenteru (treba loginForm), mel bys zvazit umisteni teto createComponent* metody do base presenteru. Pokud je to jen v nektery ruznych presenterech, muzes zvazit pouziti trait (php 5.4+)

Editoval matej21 (13. 8. 2014 22:41)

wwwnick
Člen | 4
+
0
-

aha, to s tou bezpecnosti me nenapadlo a tim padem pujdu cestou rozsireni base presenteru.

dekuju