Potomek TextArea s vlastní šablonou?
- Petr Daňa
- Člen | 109
Zdravím, v práci se ve verzi 0.9.x používá pro rozšíření formulářových prvků taková obezlička, např. pro vytvoření „WikiArea“, tj. s tlačítky ovlivňujícími obsah TextArea:
<?php
class WikiArea extends TextArea
{
public function getControl()
{
$control = parent::getControl();
$template = new Template();
$template->setFile(APP_DIR.'/templates/Components/'.get_class($this).'.phtml');
$template->id = $control->id;
$template->control = $control;
$template->baseUri = Environment::getVariable('baseUri');
return $template;
}
}
?>
Podle mě je to nesmysl, getControl by měl vracet zase instanci Control (či potomka), a ne řetezec vygenerovaný ze šablony. Ve verzi 0.9 to kupodovu funguje, ale v 1.0 už ne, vrací to nezparsovanou šablonu, tj. zdroj phtml. Vím, že formulářové prvky jsou Componenty a ne Controly, tj. by neměly mít vlastní vykreslení, ale napadá vás, jak toto nějak provoznit i ve verzi 1.0?
- arron
- Člen | 464
Ono u tech formularu je to takove trochu osidne. Za normalnich okolnosti
vraci metoda getControl
instanci tridy Html
. Ta se
potom v ConventionalRendereru
(v pripade, ze ho pouzivate)
renderuje pretypovanim na string
((string) $control->getControl()
). To by melo fungovat
i v pripade template…Kdyz to nebezi, tak bych nejdriv zkusil vratit
$template->__toString()
a jestli se to nerozbehne, tak pak uz
jenom nejaky debugging a sledovat, co presne se kde deje…