Extraparams u VisualPaginatoru

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

Ahoj, mám menší problém – potřeboval bych v tlačítkách Paginatoru předat další parametry. Jak na to?

Zkoušel jsem upravovat i šablonu pro paginator a nic.
když v renderNeco(){} použiji

<?php
  $this->template->parametry = "neco";
?>

a do šablony Paginatoru dám {$parametry} tak nic.
ani na stránce pro stáhnutí Paginatoru nic není – žádný info. Díky Dan :-)

Editoval Gaudentius (2. 4. 2010 15:26)

nAS
Člen | 277
+
0
-

Nadefinuj si v Presenteru parametry které chceš předávat jako persistentní. Potom se ti budou předávat všemi odkazy v rámci Presenteru, aniž bys musel cokoliv řešit. Např:

	/** @persistent */
	public $id;
Petr Daňa
Člen | 109
+
0
-

V šabloně pro Paginator najdi {link} nebo {plink} a tam potřebné parametry přidej. Nebo potřebuješ něco jiného?

RDPanek
Člen | 189
+
0
-

Dejme tomu, že mám seznam webů. kliknu na nějaký web a zobrazí se mi jeho klíčová slova. Těch klíčových slov je třeba 30 a na stránku chci zobrazit max. 10. Když kliknu na název webu , tak samozřejmě podle nějakého id_webu vykreslím klíčová slova k danému webu. pokud chci kliknout na druhou stránku „v stránkování“ – tak nikde samozřejmě to id článku nepřenáším. proto potřebuji dynamicky k odkazům v paginatoru přiřadit k novému atributu dynamicky nějakou hodnotu…

ale to co radí nAS se mi zamlouvá, zkusím… Zatím díky

Ondřej Mirtes
Člen | 1536
+
0
-

ID článku přenášíš, musíš ho mít jako parametr render metody v Presenteru, jinak obcházíš framework. Kdyžtak ukaž zdroják, ať ho můžeme opravit. Do VisualPaginatoru zasahovat nemusíš.

RDPanek
Člen | 189
+
0
-

posílám :-)

<?php
final class OptionsPresenter extends BasePresenter
{

    public function renderListKeyWordsIdWeb()
    {
        $this->template->id_web = Environment::getHttpRequest()->getQuery('id_web');
        $this->template->id_user = $this->detailUsers['0']->id_user;

        $row_web    = $this->myOptionsModel->FindWebId($this->template->id_web);
        $this->template->web = $row_web[$this->template->id_web]->web;

        /** strankovani*/
        $vp = $this['vp']; // zápisem $this['vp'] se najde komponenta s názvem vp a vrátí se v návratové hodnotě
        $paginator = $vp->paginator;
        $paginator->itemsPerPage = 10;

        $paginator->itemCount = $this->myOptionsModel->KeyWordsCount($this->template->id_web);

        $this->template->listKeyWords = $this->myOptionsModel
             ->ListKeyWordsIdWeb(
                     $this->template->id_web,
                     $paginator->offset,
                     $paginator->itemsPerPage);

    }
}
?>

Editoval Gaudentius (6. 4. 2010 8:47)

Ondřej Mirtes
Člen | 1536
+
0
-

Přesně, o čem jsem mluvil. Vždyť je to jedna ze základních fíčur frameworku!

public function renderListKeyWordsIdWeb($id_web) {
        $this->template->id_web = $id_web;
	//zbytek už bude stejný
}
RDPanek
Člen | 189
+
0
-

TAK TO JE HARDCORE – TAKHLE jsem to ráno zkoušel, akorát jsem dotoho blbě zapletl getHttpRequest – proto mi to nechtělo fungovat. Díky :-)

Ondřej Mirtes
Člen | 1536
+
0
-

Prostě obcházíš framework, na GET pole bys nikdy přímo neměl sahat. Pro přenos parametrů máš parametry těchto action/render metod a persistentní parametry presenterů.

RDPanek
Člen | 189
+
0
-

jasný, díky za vysvětlení ;-)