Vypnutí bloku → vypnutí SQL dotazů
- maarlin
- Člen | 207
Mám v layoutu jeden konkrétní blok:
{block #left_sidebar}
{/block}
V tomto bloku se zobrazují nějaké záznamy z databáze. Tyto informace
se tam předávají skrze BasePresenter
v metodě
startup()
.
<?php
abstract class Front_BasePresenter extends NPresenter {
protected function startup() {
parent::startup();
$articles = new Articles;
$this->template->lastArticles = $articles->getArticles()->limit(3)->fetchAll();
?>
Ovšem v okamžiku, kdy třeba na některé konkrétní straně (= kombinace presenter/view) budu chtít tenhle blok skrýt, budu taky chtít, aby se ty dotazy zbytečně nevykonávaly, když se stejně data nemají kde zobrazit…
Jde třeba nějak v presenteru zpětně zjistit, které bloky se budou zobrazovat a podle toho předání těch dat z databáze podmínit? Z hlediska životního cyklu asi ne, že?
Edit:
Sice by asi pomohlo, kdybych to zbytečně rovnou nezískával už v presenteru skrz dibi::fetchAll(), ale i tak v tom bloku může být spousta ne-databázového kódu, který se zbytečně musí vykonat…
Editoval maarlin (29. 3. 2011 20:45)
- Filip Procházka
- Moderator | 4668
Doporučuji si přečíst toto vlákno: https://forum.nette.org/…lona-v-cache#…
PS: líbí se mi nápad s komponentou ;)