Kdy použít vlastní renderer a kdy vlastní šablonu pro vykreslení formu?

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

Pročítáním fóra jsem si všiml, že pro změnu vykreslování formuláře pomocí BS3 se většinou nahrazuje renderer, ale mě přijde jednodušší změna šablony. Je tedy nějaký důvod změnu rendereru, nebo mohu vklidu pokračovat v té šabloně?

Zkouším to takhle https://gist.github.com/…86c464e41824

looky
Člen | 99
+
0
-

Renderer bych použil v případě, že mám v aplikaci více formulářů, které jsou všechny „stejné“ a „jednoduché“ – můžu si je rendrovat stejným způsobem a nepožívají nic nezvyklého, co bych musel řešit vlastní šablonou.

Naopak šablony se hodí pokud ten formulář má nějakou odlišnou, netypickou strukturu.

Editoval looky (26. 2. 2015 14:38)

akadlec
Člen | 1326
+
0
-

já osobně používám ruční vykreslování na všech formech, protože každý je vykreslený jinak a chci aby byly v bootstrap vzhledu jako zbytek appky. Ovšem já vykresluju ručně všechny elementy ne jako ty v cyklech.

Pavel Kravčík
Člen | 1196
+
0
-

A přes wrappers by to nešlo? https://github.com/…endering.php

mates
Člen | 36
+
0
-

to kzk_cz: Právě, že mi jde o to abych se poučil od zkušenějších, zajímá mě kterou technologii kdy použít. Když budou všechny formy generované stejným způsobem, na co bych u těch wrappers mohl narazit?

Šaman
Člen | 2666
+
+4
-

Při programování backendu (typicky BS design) si většinou vystačím s BS rendererem.
Na frontendu často dostanu už hotové HTML šablony, tam naopak použiju jen oživení inputů pomocí n:name atributu.

Obecné pravidlo je: použij to, nad čím strávís nejméně času pro dosažení kýženého výsledku :D

Pavel Kravčík
Člen | 1196
+
0
-

Já používám skoro přesně Davidovo řešení. A David je nejlepší. :D

Vlastně si ten formulář připravím někde mimo (basePresenter, továrna) a přidám mu vše, co chci, aby každý formulář měl. A pak ho volám třeba takhle (pokud je v basePresenter).

$this->getForm();

//basePresenter
protected function getForm()
{
	$form = new UI\Form();
	$form->addProtection();

	//boostrap wrappers + etc

	return $form;
}
Pavel Kravčík
Člen | 1196
+
0
-

@Šaman: Přeloženo „moje budoucí já pláče“. :D