Konfigurovatelna trida sablony pro NControl?
- Dr.Diesel
- Člen | 53
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
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
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
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
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
aBasePresenter
.
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)