VisualPaginator v komponentě

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

V případě že využiju VisualPaginator v komponentě, tak mi nefungují odkazy na jiné stránky.
Nějaká dobrá duše co by mi poradila?

<?php

namespace Tirus;

use Nette\Application\UI\Control;

class PostListControl extends Control {

  /** @var \Kdyby\Translation\Translator */
  protected $translator;

  /** @var \Tirus\Articles\PostModel @inject * */
  protected $post;
  private $type = 'list';

  public function injectPost(\Tirus\Articles\PostModel $p) {
    $this->post = $p;
  }

  public function injectTranslator(\Kdyby\Translation\Translator $translator) {
    $this->translator = $translator;
  }

  public function beforeRender() {
    $posts = $this->post->getData();
    $vp = new \VisualPaginator\VisualPaginator($this, 'postList');
    if (!$posts) {
      $posts = array();
      return;
    } else {
      $paginator = $vp->getPaginator();
      $paginator->itemsPerPage = 3;
      $paginator->itemCount = $posts->count();
      $posts = $posts->fetchAll($paginator->offset, $paginator->itemsPerPage);
    }


    if ($posts) {
      foreach ($posts as $rowId => $post) {
        if (trim($post->tags) != null) {
          $posts[$rowId]->tags = explode(' ', trim($post->tags));
        }
      }
    }
    $this->template->posts = $posts;
  }

  public function changeType($t) {
    $this->type = $t;
  }

  public function render() {

    $this->template->registerHelperLoader(callback($this->translator->createTemplateHelpers(), 'loader'));
    $this->template->setFile(dirname(__FILE__) . '/PostListControl.latte');
    $this->beforeRender();
    $this->template->type = $this->type;
    $this->template->render();
  }

}
David Matějka
Moderator | 6445
+
0
-

Pouzij ho jako subkomponentu, tedy pridej si metodu createComponentPaginator, kde ten paginator vytvoris

Tirus91
Člen | 199
+
0
-

matej21 napsal(a):

Pouzij ho jako subkomponentu, tedy pridej si metodu createComponentPaginator, kde ten paginator vytvoris

super, díky za radu :)

upravil jsem to takto

  protected function createComponentPaginator() {
    return new \VisualPaginator\VisualPaginator;
  }

  public function beforeRender() {
    $posts = $this->post->getData();
    $vp = $this['paginator'];

....
....