Více component na jedné stránce a jejich načítání ajaxem
- JanBE
- Člen | 62
Ahoj,
mám v „tab-panech“ několik datagridů, které jsou fyzicky na jedné stránce (šabloně), jen zobrazení se přepíná péřes záložky javascriptem.
....
<li><a data-toggle="tab" href="#tab_6"><i class="fa fa-fw fa-list"></i> Přehled-vše ({$pocet_vse})</a></li>
<li><a data-toggle="tab" href="#tab_7"><i class="fa fa-pie-chart "></i> Archiv ({$pocet_archiv})</a></li>
....
......
<div class="tab-content">
<div id="tab_6" class="tab-pane">
{control gridVse}
</div>
</div>
<div class="tab-content">
<div id="tab_7" class="tab-pane">
{control gridVse}
</div>
</div>
.....
Teď bych chtěl z důvodu optimalizace obsah záložek načítat až po kliknutí ajaxem. Potřebuju vlastně donačítat jen {control gridVse} atd, což nevím jak udělat přes snipety. Vím že snipetem můžu překreslovat proměnné a lecos dalšího, ale komponenty?
Co mě zatím napadlo, tak jsem si našel primitivní příklad v obyčejném php:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>jQuery UI Tabs - Content via Ajax</title>
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
$( function() {
$( "#tabs" ).tabs({
beforeLoad: function( event, ui ) {
ui.jqXHR.fail(function() {
ui.panel.html(
"Couldn't load this tab. We'll try to fix this as soon as possible. " +
"If this wouldn't be a demo." );
});
}
});
} );
</script>
</head>
<body>
<div id="tabs">
<ul>
<li><a href="#tabs-1">Preloaded</a></li>
<li><a href="c1.php">Tab 1</a></li>
<li><a href="c2.php">Tab 2</a></li>
<li><a href="c3.php">Tab 3 (slow)</a></li>
<li><a href="c4.php">Tab 4 (broken)</a></li>
</ul>
<div id="tabs-1">
<p>Proin elit arcu, rutrum commodo, vehicula tempus, commodo a, risus. Curabitur nec arcu. Donec sollicitudin mi sit amet mauris. Nam elementum quam ullamcorper ante. Etiam aliquet massa et lorem. Mauris dapibus lacus auctor risus. Aenean tempor ullamcorper leo. Vivamus sed magna quis ligula eleifend adipiscing. Duis orci. Aliquam sodales tortor vitae ipsum. Aliquam nulla. Duis aliquam molestie erat. Ut et mauris vel pede varius sollicitudin. Sed ut dolor nec orci tincidunt interdum. Phasellus ipsum. Nunc tristique tempus lectus.</p>
</div>
</div>
</body>
</html>
Problém tady je, že pokud dám místo c1.php – c1.latte, ve které je uvedeno jen {control gridVse}, tak to sablonu nenajde. V samotném c1.php (které se načítá správně) samozřejmě nejde použít {control gridVse}. Jen obyč. php zápisy.
Nenapadá někoho jak tohle vyřešit?
- Cars Tomas
- Člen | 43
Zkus si to navazázat na nějakou podmínku např.:
<div class="tab-content">
<div id="tab_7" class="tab-pane">
{snippet gridVse}
{if isset($renderGridVse) && $renderGridVse === true}
{control gridVse}
{/if}
{/snippet}
</div>
</div>
no a ten $renderGridVse si nastav v nějakém handle na kterej si vytvoříš odkaz