Vykreslení zanořené kontroly v layoutu (modal)
- zt
- Člen | 13
Zdravím,
mám komponentu pro tvorbu modal oken. Je jednoduchá, kosnstruktor má parametr callback který má vrátit komponentu který se má vykreslit v modal okně.
Používá se takhle třeba:
public function createComponentModal() {
return new ModalControl(function() {
return new ProductDetailControl($this->getProduct(), $this->cart, $this->productRepository);
});
}
Krásně mi to funguje když v šabloně zavolám
{control modal}
, prostě skvělé. Ovšem z různch důvodů chci
vykreslovat tyto modaly v layoutu nezanořené v DOMu. Otázkou je jak toho
docílit?
Zkoušel jsem přes attached
kdy do BasePresenteru do pole
skládám ty komponenty ale zasekl jsem na tom že je nemám jak vykreslit
protože attached se volá ař při renderování ve většině případů a v
afterRender
už to nemůžu do layoutu dokreslit pokud se nepletu.
Takže tedy jak na to?
- Unlink
- Člen | 298
Ahoj
môžeš použiť bloky
do layoutu si niekde pred </body>
daj
{ifset modalBlock}{include modalBlock}{/ifset}
a potom tam kde potrebuješ si ten blok nadefinuješ
{block modalBlock}
{control modal}
{/block}
ps. píšem to len z hlavy, tak som si úplne neni istý či takto, ale bloky sú to čo hľadáš :)
- Pavel Macháň
- Člen | 282
zt napsal(a):
Zdravím,
mám komponentu pro tvorbu modal oken. Je jednoduchá, kosnstruktor má parametr callback který má vrátit komponentu který se má vykreslit v modal okně.
Používá se takhle třeba:
public function createComponentModal() { return new ModalControl(function() { return new ProductDetailControl($this->getProduct(), $this->cart, $this->productRepository); }); }
Krásně mi to funguje když v šabloně zavolám
{control modal}
, prostě skvělé. Ovšem z různch důvodů chci vykreslovat tyto modaly v layoutu nezanořené v DOMu. Otázkou je jak toho docílit?
Zkoušel jsem přesattached
kdy do BasePresenteru do pole skládám ty komponenty ale zasekl jsem na tom že je nemám jak vykreslit protože attached se volá ař při renderování ve většině případů a vafterRender
už to nemůžu do layoutu dokreslit pokud se nepletu. Takže tedy jak na to?
Řeším to pomocí „Modal manageru“, který je obsažen v Base presenteru a pomocí signálu vložím do továrničky jaký modál se má vytvořit (pomocí extension mám registrováné továrničky modálů které jsou pro manager dostupné).
- Pavel Macháň
- Člen | 282
zt napsal(a):
Pavel Macháň: nějaký příklad by nebyl prosím? … není zase blbé v komponentně spoléhat na presenter?
@zt Komponenta funguje sama o sobě. Manager nedělá nic jiného než že modál zobrazí (načte pomocí ajaxu nebo po redirectu). V komponentě (modál) se s presentrem vůbec nepracuje. Pokud by si modál vložil ručně do templatu tak by také fungovala. Kdyby bylo potřeba zavolat presenter tak v modálu vytvoříš event, který následně zpracuje presenter v rámci eventu.
Editoval Pavel Macháň (28. 8. 2015 15:13)