Result selectu v proměnné – výpis/stránkování v komponentě
- motorcb
- Člen | 552
Zdravím.
V presenteru získám vyhovující záznam/záznamy, které odešlu do
komponenty kde se zobrazí.
Nevím kolik bude záznamů. Občas muže být pouze 1, občas hodně. Když
jich je hodně (víc než 20), tak bych chtěl využít stránkování.
Stránkování si zajistím ale nevím jak v komponentě vypíšu zadané
rozmezí záznamů:
Presenter:
$aZboziList = $this->context->createZbozi()->order('date DESC');
return new ZboziList( $this->context, $aZboziList );
Komponenta:
public function __construct( $context, $aZboziList )
{
parent::__construct(); // vždy je potřeba volat rodičovský konstruktor
$this->context = $context;
//vyhovující zboží pro zobrazení
$this->aZboziList = $aZboziList ;
}
public function render()
{
$this->template->setFile(__DIR__ . '/ZboziList.latte');
if( count( $this->aZboziList ) >= 20 )
{
//jak bych zobrazil jenom prvních 20 záznamů ?????
// $this->aZboziList - se nechová jako pole, tudíž nemůžu použít $this->aZboziList [0] ...
}
else
{
$this->template->aZboziList = $this->aZboziList ;
}
$this->template->render();
}
Jak získám z **$this->aZboziList ** zadaný počet záznamů(například 0–20, 20–40, …) ?
Díky za rady a nakopnutí :)
Editoval motorcb (22. 5. 2012 11:12)
- Ascaria
- Člen | 187
Nejprve doporučuju zahodit to:
if() {
// vic jak 20
} else {
// min jak 20
}
To není nejlepší přístup, máš prostě X záznamů a nebo žádný:
if($count > 0) {
// nejake zaznamy
} else {
$this->flashMessage('Žádné záznamy');
}
Pak doporučuju přečíst nějaký úvod do stránkování, např https://doc.nette.org/…s/pagination
.
ad. $count: nejspíš bude potřeba druhý dotaz select count(*) bez limitu a
offsetu pro celkový počet
Editoval Ascaria (22. 5. 2012 11:40)
- motorcb
- Člen | 552
Ascaria:
jenže já chci stránkovat až v komponentě. SQL dotaz nedělám
v komponentě. Jen mi do komponenty příjde výsledek dotazu
($aZboziList).
Otázka zní jak z $aZboziList ( $aZboziList =
$this->context->createZbozi()->order(‚date DESC‘); ) vyberu 0–20
záznamů aniž bych upravoval SQL dotaz, který se stejně nevykonává
v komponentě ale vždycky někde jinde.
Jde to vůbec?
Stránkování vím jak udělat, jen teď potřebuji z $aZboziList získat záznamy od x do y
Editoval motorcb (22. 5. 2012 12:30)