VisualPaginato help me please

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
zuhla
Člen | 33
+
0
-

Dobrý den, mám problém se zprovozněním VisualPaginatorem. Mám ho k použítí na stránkování příspěvků z databáze (MySQL).

Presenter:

public function renderDefault()
	{
            $vp = $this['vp']; hodnotě
    $paginator = $vp->paginator;
    $paginator->itemsPerPage = 2;
    $paginator->itemCount = PostsModel::fetchAll();
    $paginator = PostsModel::fetchAll($paginator->offset, $paginator->itemsPerPage);

    $this->template->posts = PostsModel::fetchAll();

        }

        protected function createComponentVp()
        {
             return new VisualPaginator;
        }

Model:

public static function fetchAll($limit = NULL, $offset=NULL)
	{
		return dibi::fetchAll('
			SELECT *
			FROM [posts]
			ORDER BY [date]
                        ', dibi::DESC,
                        '%if', isset($limit), 'LIMIT %i %end', $limit,
                        '%if', isset($offset), 'OFFSET %i %end', $offset
		);
	}

Všem dopředu děkuji za jakoukoliv radu.

S pozravem Patrik Krhovský

Editoval zuhla (2. 10. 2010 20:06)

Jan Endel
Člen | 1016
+
0
-

A co to dělá/nedělá/mělo dělat?

zuhla
Člen | 33
+
0
-

Omlouvám se, zapomněl jsem to tam napsat. Předtím se to zobrazilo, ale na každě stránce bylo to samé. Prostě to neskládalo nic. A teď se to už ani nezobrazí. Takže nezobrazí a mělo by to dát na každou stránku jen 2 příspěvky.

Jan Endel
Člen | 1016
+
0
-

Nedal bych tam fetchAll ale jinačí dotaz na zjištění počtu prvků $paginator->itemCount = PostsModel::fetchAll();

Dodatek: doufám, že ho správně voláš v šabloně

Editoval pilec (2. 10. 2010 20:14)

Proki
Člen | 66
+
0
-

Napsal bych to spíše takto:

<?php
public function renderDefault()
{
    $vp = $this['vp'];
    $paginator = $vp->paginator;
    $paginator->itemsPerPage = 2;
    $paginator->itemCount = count(PostsModel::fetchAll()); //nebo jiný SQL dotaz pro zjištění celkového počtu

    $this->template->posts = PostsModel::fetchAll($paginator->length, $paginator->offset);
}

protected function createComponentVp()
{
    return new VisualPaginator;
}
?>

Editoval Proki (2. 10. 2010 20:36)

zuhla
Člen | 33
+
0
-

Jasně v šabloně ho volám správně: {control vp}

A jak bys to dal jináč? Uveď prosím njaký příklad. Díky

zuhla
Člen | 33
+
0
-

Proki, tak jsme se dostali dál. Už se vykreslí a mám tam 3 příspěvky, jenže na první stránce se nezobrazí, žádny a na druhé strance se zobrazí jeden a to ten poslední, který tam má být. Takže už jen vyřešit tuhle jednu chybičku.

Proki
Člen | 66
+
0
-

Aha, koukám, že voláš funkci fetchAll s prohozeným pořadím argumentů. V kódu výše jsem to opravil, tak teď už by to mělo být OK.

Editoval Proki (2. 10. 2010 20:34)

zuhla
Člen | 33
+
0
-

Moc díky.

pekelnik
Člen | 462
+
0
-

jsem sám koho irituje v nadpisu „help me please“?

sodae
Nette Evangelist | 250
+
0
-

pekelnik:nejsi :)

BTW: pro mody: přejmenovat by to chtělo a naše posty smazat :)