VisualPaginator v komponentě

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

Zdravím. Napsal jsem horko těžko svou první komponentu. Myšlenka je částečně funkční WordPress blog uvnitř Nette aplikace. Teď bych chtěl využít komponentu VisualPaginator. Ale asi to moc nechápu. Uvnitř komponenty mám metodu createComponentVp(). Co jsem tak pochopil, tak takhle připojím komponentu do stromu. Pak v metodě render() nastavím parametry paginatoru. Když ale v šabloně posts.phtml použiju makro {widget vp}, neudělá to NIC.

Zkoušel jsem to debugovat a vypadá to, že v poli $this->components normálně ten vp je. Někde bude nějaká bota. Musí se udělat ještě něco?

Jinak musím říct že dokumentace ke komponentám je dost tough, pokud člověk moc neví, jak to funguje.

<?php
class ToadPress extends Control {

    /** @var ToadModel */
    private $model;

    /** @var Array   Nastaveni Wordpressu z db */
    private $options;

    /** @var String  Aktualni sablona */
    private $currentTemplate;


    public function  __construct() {
        parent::__construct();

        // Pripojeni do databaze, konfigurace v souboru config.ini
        $this->model = new ToadModel();

        // Nastaveni default sablony
        $this->currentTemplate = 'posts.phtml';

        // Na zacatku se vyberou clanky
        $this->template->posts = $this->model->getPosts(10);

        ...

    }

    public function render() {
        $this['vp']->getPaginator()->itemCount = $this->model->countPosts();
        $this['vp']->getPaginator()->itemsPerPage = 10;

        $template = $this->template;
        $template->setFile(dirname(__FILE__) . '/templates/' . $this->currentTemplate);

        $template->registerHelperLoader('Helpers::loader');
        $template->render();
    }


    protected function createComponentVp($name) {
        $control = new VisualPaginator($this, $name);
        return $control;
    }
?>
Majkl578
Moderator | 1364
+
0
-

Kód máš dobře, akorát vlastnost currentTemplate je zbytečná. Zřejmě ti metoda $this->model->countPosts() vrací 0, díky čemuž se v šabloně paginátoru nesplní hlavní podmínka.

Martin Mates
Člen | 179
+
0
-

Majkl578 napsal(a):

Kód máš dobře, akorát vlastnost currentTemplate je zbytečná. Zřejmě ti metoda $this->model->countPosts() vrací 0, díky čemuž se v šabloně paginátoru nesplní hlavní podmínka.

Dobře ty! Díky. currentTemplate je tady v tom kousku zbytečná ale pak má smysl.