Modulové rozšíření šablon

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

Nemá někdo z vás tip jakým směrem se vydat pokud chci mezimodulově rozšitovat šablony? Mějme např. modul uživatel kde si vytvořím formulář přidání/editace uživatele kde budou políčka jako jméno, heslo, email atd. Pak mějme modul práva. Tento modul přidá do formuláře uživatele políčko role, obyčejný select box s výběrem role.

Teď chci tento formulář vykreslit. Pokud bych požil klasické latte makro pro formulář tak je to ok a není co řešit, ale jak postupovat v případě ručního renderu? Je něco takového vůbec možné? Udělat nějak blok?

vitkutny
Člen | 73
+
+2
-

jedna z možností je vykreslit formulář manuálně jen částečně, tím že na konci zavoláš ručně $form->getRenderer()->renderControls($form), který dovykreslí všechny inputy, které jsi nevypsal ručně

akadlec
Člen | 1326
+
0
-

No a dalo by se udělat to že třeba ty dopřidané elementy (v tomto případě select role) by mělo vlastní render? Zavolalo by se jak si uvedl:

$form->getRenderer()->renderControls($form);

což by zavolalo vyrenderování zase pomocí vlastní šablony kterou by si dodal modul role?

vitkutny
Člen | 73
+
0
-

určitě dalo, v tom případě si už můžeš rovnou nechat v šabloně jen {control form} a ve vlastní implementaci Nette\Forms\IFormRenderer dohledávat a načítat šablony pro daný form/container