Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:

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. června 19:43
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Michal Kuba
IT Man:

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

$this->urlStrany()

a ne funkci

urlStrany()
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět  +1 1. června 20:32
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na IT Man
Michal Kuba:

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

 
Nahoru Odpovědět  +1 1. června 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.