Routa pro stránkování v komponentě
- kleinpetr
- Člen | 480
Ahoj,
jak bych mohl tohle upravit pomocí routy ?
www.domain.cz/articles/list/articleList-visualPaginator-page=4
komponenta ArticleList v sobě vytváří VisualPaginator
představoval bych si něco jako:
www.domain.cz/articles/list/page/4
mockrát díky.
Editoval kleinpetr (20. 5. 2015 8:11)
- ChocoTUx
- Člen | 31
Ahoj,
no tak když máš routu tak tam prostě napíšeš co jednotlivé věci znamenají
V routě máš tohle
$router[] = new Route('<presenter>/<action>/<type>/<number>', Homepage:default);
a zpracuješ to v presentru takhle
class ArticlesPresenter
{
public function actionList()
{
$type = $this->getParam('type'); //tady se ti načte page
$number = $this->getParam('number'); //tady se ti načte 4
}
//nebo by to mohlo fungovat primo v hlavice metody
public function actionList($type, $number)
{
}
}
a když chceš sestavit adresu, tak prostě jenom používáš redirect nebo n:href s parametry
$this->redirect('Articles:list', array(type=>'page', 'number'=>4);
v sablone
<a n:href="Articles:list, type=>page, number=>4">
- David Matějka
- Moderator | 6445
Do routy muzes dat kompletni path k parametru:
new Route('<presenter>/<action>/page/<articleList-visualPaginator-page \d+>'
- ChocoTUx
- Člen | 31
Aha promiň, tohle jsem zazdil.
No co přesně chceš od komponenty?
Routování stejně vždy provádí routa a první to musí jít přes
presenter. Takže když potřebuješ to číslo dostat do komponenty, tak ji to
předej jako paramter nebo tak nějak.
A když chceš dělat redirect přes komponentu? Tak musel by jsi si ji tam dostat – nebo inicializovat nějakou třídu co to umí (tužím že http\request). Ale osobně bych nechal routování na presentru (něco vrací nebo tak nějak).