Blok z šablony do layoutu
- akadlec
- Člen | 1326
Je nějaká možnost že z komponenty dostanu nahoru do layoutu definovaný blok?
Mám @layout.latte ve kterém mám definován kontejner pro modální okna:
<!-- PopUp windows -->
<div n:snippet="modalWindowBlock">{block #modalWindow}{/block}</div>
<!-- End PopUp windows -->
<div id="fb-root"></div>
A pak v jedné akci udělám vykreslení formuláře ve view akce:
{layout '../../@layout.latte'}
{control editContributorForm}
Jenže to jak bude vypada form se určí v oné komponentě a form má dvě podoby, klasickou a modální. Takže komponenta rozhodne že chce modální okno a pošle šablonu komponenty v podobě:
{define #modalWindow}
{include #parent}
<div n:snippet="formArea" class="modal fade display" data-width="545" data-manager="#snippet--modalWindowBlock">
//....
</div>
{/define}
Problém je ale ten že se ten blok nedostane ven z komponenty a tudíž není v šabloně layoutu. Je nějaký způsob jak to probublat z komponenty až do layoutu?
- llook
- Člen | 407
Nevidím důvod, proč by to javascript nemohl úplně stejně patřičně zpracovat kdekoli jinde v DOMu. Může to i vzít a přemístit, pokud třeba CSS nebo nějaké live eventy počítají s tím, že to ve stromu bude na určitém místě. Pokud používáš nette.ajax.js, tak to bude cca takto:
$.nette.ext('nevim', {
'success': function () {
var $target = $('#modalArea');
$target.empty();
$('.modal').each(function () {
var $content = $(this);
$target.append($content.html());
$content.remove();
});
}
});
- akadlec
- Člen | 1326
uf, jasně jde to X způsoby. ale co když to musíš udělat bez js? to pak těžko budeš hýbat DOMem. Ale to byla jen ukázka kde jsem to aktuálně potřeboval vyřešit. Případů může být více, třeba inline JS který se vygeneruje v komponentě na základě nějakých parametrů a bude potřeba jej dostat do hlavního layoutu aby byl tam kde má a né uprostřed stránky.
Editoval akadlec (30. 4. 2014 7:50)