Ako doplním do stránkovania samotné cisla stranok?

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

Ahojte,

narazil som na problém … ako doplním čisla stránok do stránkovania?

Mám nasledovné …

<?php
$paginator = new Nette\Utils\Paginator;
$paginator->setItemCount(2); // celkový počet položek (např. článků)
$paginator->setItemsPerPage(1); // počet položek na stránce
$paginator->setPage(1); // číslo aktuální stránky, číslováno od 1

$result = $this->dtb->table("collection")->limit($paginator->getLength(), $paginator->getOffset());
$this->template->collection = $result;
?>

… chýba mi niečo ako :

<?php
prev <1 2 3 4 ... 15 16?> next
?>

Editoval Takeshi (19. 11. 2015 21:21)

CZechBoY
Člen | 3608
+
0
-

Potřebuješ ještě vizuální část komponenty. Třeba https://github.com/…al-paginator

Takeshi
Člen | 596
+
0
-

CZechBoY napsal(a):

Potřebuješ ještě vizuální část komponenty. Třeba https://github.com/…al-paginator

Tak do app som si vlozil stiahnuty subor IPub, v ktorom je visual paginator (tak nejako sa mi zda, ze som to robil aj minule) a do presentera som si vytvoril component

<?php
        protected function createComponentVisualPaginator()
        {
            // Init visual paginator
            $control = new VisualPaginator;

            return $control;
        }
?>

a do sablony som dal …

<?php
{control visualPaginator}
?>

mam to ale zle … Class ‚IPub\VisualPaginator\Components‘ not found … ak mam nieco este niekde napisat, neviem co a ani kde … tak prosim este pomoct, dik …

Editoval Takeshi (19. 11. 2015 21:51)

Takeshi
Člen | 596
+
-1
-

Takeshi napsal(a):

CZechBoY napsal(a):

Potřebuješ ještě vizuální část komponenty. Třeba https://github.com/…al-paginator

Tak do app som si vlozil stiahnuty subor IPub, v ktorom je visual paginator (tak nejako sa mi zda, ze som to robil aj minule) a do presentera som si vytvoril component

<?php
        protected function createComponentVisualPaginator()
        {
            // Init visual paginator
            $control = new VisualPaginator;

            return $control;
        }
?>

a do sablony som dal …

<?php
{control visualPaginator}
?>

mam to ale zle … Class ‚IPub\VisualPaginator\Components‘ not found … ak mam nieco este niekde napisat, neviem co a ani kde … tak prosim este pomoct, dik …

A aby som nezabudol … pridal som este do …

composer.json

<?php
{
    "require": {
        "ipub/visual-paginator": "dev-master"
    }
}
?>

config.neon

<?php
extension:
	visualPaginator: IPub\VisualPaginator\DI\VisualPaginatorExtension
?>

chyba … Found sections ‚extension‘ in configuration, but corresponding extensions are missing.

Editoval Takeshi (19. 11. 2015 22:03)

Šaman
Člen | 2666
+
0
-

Je to sekce extensions:

Takeshi
Člen | 596
+
0
-

OK, tak ja už neviem, snažil som sa robiť všetko podľa návodu + to, čo ste mi poradili na fóre … ale stálemám niekde chybu …

Presenter :

<?php

namespace App\Presenters;

use Nette;
use App\Model;
use Nette\Database;

use IPub\VisualPaginator\DI\VisualPaginatorExtension as VisualPaginator;

class HomepagePresenter extends BasePresenter
{
        /**
         * @var Model
         */
        private $dataModel;

        public function renderDefault()
        {
            $someItemsList = $this->dataModel->findAll();;

            // Get visual paginator components
            $visualPaginator = $this['visualPaginator'];
            // Get paginator form visual paginator
            $paginator = $visualPaginator->getPaginator();
            // Define items count per one page
            $paginator->itemsPerPage = 10;
            // Define total items in list
            $paginator->itemCount = $someItemsList->count();
            // Apply limits to list
            $someItemsList->limit($paginator->itemsPerPage, $paginator->offset);
        }

        /**
         * Create items paginator
         *
         * @return VisualPaginator\Control
         */

        protected function createComponentVisualPaginator()
        {
            // Init visual paginator
            $control = new VisualPaginator;

            return $control;
        }
}
?>

Sablona :

<?php
	{control visualPaginator}
?>

composer.jspn :

<?php
{
	"require": {
		...
                "ipub/visual-paginator": "dev-master"
	},
	...
}
?>

config.neon

<?php
extensions:
visualPaginator: IPub\VisualPaginator\DI\VisualPaginatorExtension
?>… + IPub>VisualPaginator mam vlozeny pod app
CHYBA > Call to a member function findAll() on a non-object

Velka vdaka za pomoc

Editoval Takeshi (19. 11. 2015 23:21)

CZechBoY
Člen | 3608
+
0
-

Chybí ti anotace @inject u $dataModel + ji nastav jako public.

/**
 * @var Model
 * @inject
 */
public $dataModel;

Editoval CZechBoY (19. 11. 2015 23:37)

Takeshi
Člen | 596
+
0
-

CZechBoY napsal(a):

Chybí ti anotace @inject u $dataModel + ji nastav jako public.

/**
 * @var Model
 * @inject
 */
public $dataModel;

Dakujem … a ako som predpokladal … ukazala sa dalsia chyba >>> Class or interface ‚App\Model‘ used in @var annotation at App\Presenters\HomepagePresenter::$dataModel not found. Check annotation and ‚use‘ statements.

CZechBoY
Člen | 3608
+
0
-

Tak už zbejvá si ten model udělat :-))

Pro vyzkoušení můžeš použít kus kodu, co si použil na vytahování dat (místo vytahování z modelu):

$someItemsList = $this->dtb->table("collection");

Potom to ale předělej na mode, ať se v tom vyznáš líp.

Takeshi
Člen | 596
+
0
-

Dakujem, toto som uz skusal aj predtym ale stale mi hadzalo chybu … aj uz aj viem preco … Ked som vitvaral componentu VisualPaginator … zabudol som pridat …
… vedel som ze to bude len nejaka blbost, kvoli ktorej budem hladat chybu cely den :-D

Pred …

<?php
        protected function createComponentVisualPaginator()
        {
            // Init visual paginator
            $control = new VisualPaginator;

            return $control;
        }
?>

Opravene …

<?php
        protected function createComponentVisualPaginator()
        {
            // Init visual paginator
            $control = new VisualPaginator\Control;

            return $control;
        }
?>

Kazdopadne vdaka

kejlicz
Člen | 201
+
+1
-

Osobně si myslím, že by mohlo mít Nette nějaký jednoduchý visual paginator už v sobě. je to věc, která je potřeba skoro vždy a dost by to ulehčilo začátky. Taky jsem s tím ze začátku zápasil.

Pavel Macháň
Člen | 282
+
0
-

kejlicz napsal(a):

Osobně si myslím, že by mohlo mít Nette nějaký jednoduchý visual paginator už v sobě. je to věc, která je potřeba skoro vždy a dost by to ulehčilo začátky. Taky jsem s tím ze začátku zápasil.

Visual paginátor bych do Nette netahal. VP komponent je hromada, jen si vybrat a pokud ti nesedí ani jedna tak si napiš lepší a tu pak používej znovu a znovu (a nebo ji dej jako opensource na github)

Ondris
Člen | 37
+
0
-

Myslím si že paginator, který je v Nette je dostačující https://doc.nette.org/…s/pagination
Na jednoduchý stránkování to stačí u složitějších věcí si stejně každý vybere svou komponentu.