VisualPaginator v komponentě
- Martin Mates
- Člen | 179
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
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
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.