Vlozeni rendereru do formulare napevno
- dehtak
- Člen | 113
Ahoj mam otazku nejde nejak prez extensions nebo jinak vlozit do formulare
trvale svuj renderer ? Popripade i trannslator.
Abych pokazdy kdyz vytvarim novej form nemusel psat $form->setRenderer…
.
Nechci ale vytvaret tovarnu.
Myslim ze by to slo asi prez decorator ?
Editoval dehtak (27. 6. 2021 8:13)
- Marek Bartoš
- Nette Blogger | 1274
Jak psal Majkl, přes factory. Formulář není služba a tak ho nemůžeš konfigurovat přes extension ani decorator (DecoratorExtension)
- dehtak
- Člen | 113
jo ale me u tech tovaren stve ze je musi injektovat.
Misto abych napsal new form;
Pak v tom mam bordel neco se musi injektovat nekde muzu napsat new class.
Treba napriklad u latte jde vlozit napevno translator a nemusim pokazdy psat
$this->template->setTranslator(…)
Proc neco takovyho nejde u form ?
Takze to nejde ani pres extension afterCompile addBody ??
Ze by to vytahlo treba moji tovarnu.
pokud bych pouzil jen renderer tak ji injektovat nemusim ale chci tam taky narvat translator a to bych potom injektovat musel aby se do ty tridy ten translator vlozil
Editoval dehtak (27. 6. 2021 12:53)
- Marek Bartoš
- Nette Blogger | 1274
Protože latte ti vytváří TemplateFactory, což je služba registrovaná v DIC. Kdybys latte template vytvářel přes new, tak bys tam translator také neměl.
- dehtak
- Člen | 113
a ani takhle by to neslo tohle je jen priklad vytvoreni extra input pole
Forms\Container::extensionMethod('addDate', function ($form, $name, $label = null) {
return $form[$name] = new DateControl($label);
});
ze by se to nejak upravilo a automaticky to tam vkladalo renderer ? a translator ?
- Marek Bartoš
- Nette Blogger | 1274
Mohl by sis podědit formulář a v konstruktoru nastavovat renderer ze
statické property. Property bys nastavil v initialize() metodě DIC. Do
initialize() dovedeš přidat kód přes extension.
Jen by asi kdokoli kdo by to kdy chtěl upravit, debugovat nebo testovat si
přilepil tvoji fotku na boxovací pytel a já bych nebyl výjimka.