Konfigurovatelna trida sablony pro NControl?

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

Ahoj vsem,

premyslim proc je v metode NControl->createTemplate() na zacatku natvrdo $template = new NTemplate(); Nevim presne jake by melo byt „Nette-ciste“ reseni, ale simple uprava by imho byla dost pouzitelna pro nejake obecne upravy chovani NTemplate v jeho potomkovi ?

abstract class NControl extends NPresenterComponent implements IPartiallyRenderable
{
	/** @var string */
	private $template_classname = "NTemplate";

	//...

	/**
	 * @return ITemplate
	 */
	protected function createTemplate()
	{
		$template_classname = $this->template_classname;
		$template = new $template_classname;
		//...
	}
	//...
}

Co si o tom myslite?

Editoval Dr.Diesel (18. 8. 2010 9:56)

Ondřej Mirtes
Člen | 1536
+
0
-

Takové návrhy už tu byly, ale přijde mi to zbytečné. Každý si ve svých BaseControl/BasePresenter může překrýt metodu createTemplate a zařídit si v ní, co potřebuje.

Dr.Diesel
Člen | 53
+
0
-

Ondřej Mirtes napsal(a):

Takové návrhy už tu byly, ale přijde mi to zbytečné. Každý si ve svých BaseControl/BasePresenter může překrýt metodu createTemplate a zařídit si v ní, co potřebuje.

Nj, ale v pripade jakekoli zmeny ve frameworku v NObject->createTemplate o ne pak prijdu nebo je musim v pripade upgradu kopirovat do BasePresenteru. Prijde mi to nesmysl,nechci menit zadny statement v createTemplate, jen chci v controlu/presenteru pouzit jinou tridu sablony…

Trivialni priklad, ale treba mit tridu TranslatedTemplate, ktera na sebe bude automaticky registrovat translator pri instancovani. Samo to lze vyresit i v presenteru, ale osobne nechapu zarputilost, se kterou se ty konfigurovatelny tride brani.

Nepomuze mi ani parent::createTemplate, protoze tam je to prave natvrdo. A prochazet template pres foreach() a nastavovat klon uz je uplna hloupost…

Patrik Votoček
Člen | 2221
+
0
-

Všechno co jsi tady popsal je funkce kterou má na starosti právě createTemplate(). Nic ti nebrání a navíc je to doporučovaný postup udělat si BaseControl a BasePresenter.

Dr.Diesel
Člen | 53
+
0
-

vrtak-cz napsal(a):

Všechno co jsi tady popsal je funkce kterou má na starosti právě createTemplate(). Nic ti nebrání a navíc je to doporučovaný postup udělat si BaseControl a BasePresenter.

Prijde mi, ze predchozi post jsi necetl. O BasePresenteru / BaseControlu prirozene vim, mluvim o tom, ze misto zmeny jedne property Controlu/Presenteru musim zduplikovat 33 radkovou metodu (registrujici helpery, predavajici promenne, flashe apod.). Pokud to tak musi byt, tak budiz, nicmene stale nechapu proc :-D

Podobny nesmysl resis ty sam s Environment https://forum.nette.org/…onment-final, ktery ti taky nikdo nebrani zduplikovat cely a upravit :-D Jedine k cemu tohle vede je, ze si ten final sam umazes , nebo to budes cele kopirovat?? Otazka je, jestli je tohle spravny smer vyvoje… :-D

Editoval Dr.Diesel (18. 8. 2010 15:22)