NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Paginace skrz MVC

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Michal Kuba
Tvůrce
Avatar
Michal Kuba:1.6.2016 19:43

Ahoj.
Snažím se aplikovat zdejší paginaci na mém MVC webu.

V šabloně, kde ji chci mít, vypisuji pouze toto:

<?= $strankovani ?>

V příslušném kontroleru pak dělám toto:

$paginace=new paginace();
$pocetObrazku=$spravceObrazku->vratPocetObrazku();
           $stran = ceil($pocetObrazku[0] / $naStranu);
           $url='?strana={'.$strana.'}';
           $strankovani=$paginace->paginace($strana, $stran, $url);
           $this->data['strankovani']=$strankovani;

..s tím, že v $strana a $stran jsou funkční čísla, tam je to ok.

A potom mám soubor paginace.php upravený takto: (je to pouze změněno celé na třídu a v tom nejsou function ale public function)

<?php

class paginace
{

public function urlStrany($url, $strana)
{
        return str_replace('{strana}', $strana, $url);
}

public function paginace($strana, $stran, $url)
{
        $polomer = 5;
        $html = '<nav class="centrovany"><ul class="paginace">';
        // Sipka vlevo
        if ($strana > 1)
                $html .= '<li><a href="' . urlStrany($url, $strana - 1) . '">&laquo;</a></li>';
        else
                $html .= '<li class="neaktivni">&laquo;</li>';
        $left = $strana - $polomer >= 1 ? $strana - $polomer : 1;
        $right = $strana + $polomer <= $stran ? $strana + $polomer : $stran;
        // Umisteni jednicky
        if ($left > 1)
                $html .= '<li><a href="' . urlStrany($url, 1) . '">1</a></li>';
        // Tecky vlevo
        if ($left > 2)
                $html .= '<li class="neaktivni">&hellip;</li>';
        // Stranky v radiusu
        for ($i = $left; $i <= $right; $i++)
        {
                if ($i == $strana) // Aktivni stranka
                        $html .= '<li class="aktivni">' . $i . '</li>';
                else
                        $html .= '<li><a href="' . urlStrany($url, $i) . '">' . $i . '</a></li>';
        }
        // Tecky vpravo
        if ($right < $stran - 1)
                $html .= '<li class="neaktivni">' . '&hellip;' . '</li>';
        // Umisteni posledni stranky
        if ($right < $stran)
                $html .= '<li><a href="' . urlStrany($url, $stran) . '">' . $stran . '</a></li>';
        // Sipka vpravo
        if ($strana < $stran)
                $html .= '<li><a href="' . urlStrany($url, $strana + 1) . '">&raquo;</a></li>';
        else
                $html .= '<li class="neaktivni">&laquo;</li>';
        $html .= '</ul></nav>';
        return $html;
}
}

Ale bohužel, po spuštění je stránka mrtvá a háže to chybu. Když oddělám ony úkony s $paginace, tak je to ok.. V čem dělám chybu?

Odemčel jsem si i zdejší tutoriál na MVC eshop, jenže tam je ta paginace zase jinak udělaná a nijak mi to nepomáhá..

Nějaký tipy, jak to upravit, aby mi to fungovalo a vracelo do $strankovani ten správná html kod? Nějak to musí jít, ne snad?

Díky za rady! :)

 
Odpovědět
1.6.2016 19:43
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Michal Kuba
Jan Lupčík:1.6.2016 20:32

Když máš tu třídu, používej metodu

$this->urlStrany()

a ne funkci

urlStrany()
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
1.6.2016 20:32
TruckersMP vývojář
Avatar
Michal Kuba
Tvůrce
Avatar
Odpovídá na Jan Lupčík
Michal Kuba:1.6.2016 20:43

Díky, nevím proč mě to nenapadlo, když už jsem zkoušel všelijaký horší ptákoviny :D

 
Nahoru Odpovědět
1.6.2016 20:43
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.