Reg. výraz v routeru

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

Omlouvám se, pokud už to tu bylo a jsem slepý, když jsem to nenašel. Snažím se nějakým způsobem vyrobit stránkování. Ve quick-start není zpracované a ze zdrojáku nejsem zrovna chytrý. Chtěl bych url ve smyslu: /admin/users/page-5. Router jsem zkoušel

$router[] = new Route('admin/<presenter>/<page page\-\d{1,3}>', array(
  'module' => 'admin',
  'presenter' => 'Default',
  'action' => 'default',
  'page' => 0,
));

V presenteru pak číslo stránky zpracovávám:

class Admin_UsersPresenter extends BasePresenter
{
  public function actionDefault($page = 0)
  {
    echo $page; // zobrazí vždy 0
  }
}

Zvládnu formát s lomítky /admin/users/page/5, formát /page-5 je však nad mé síly. Má někdo nějaký nápad? Díky za každé nakopnutí správným směrem.

LM
Člen | 206
+
0
-

Zkusil bych:

<?php
$router[] = new Route('admin/<presenter>/page-<page \d{1,3}>', array(
  'module' => 'admin',
  'presenter' => 'Default',
  'action' => 'default',
  'page' => 0,
));
?>
LuKo
Člen | 116
+
0
-

LM: Pardon, nevšiml jsem si reakce. Toto sice funguje, předá do presenteru číslo stránky, ale při požadavku na /admin/users rovnou přesměruje na /admin/users/page-0. Kdyby to šlo bez toho defaultního přesměrování, bylo by to super.

Editoval LuKo (1. 11. 2008 14:03)

LM
Člen | 206
+
0
-

Pak asi použít dvě routy, nebo upravit výchozí hodnotu actionDefault:

<?php
public function actionDefault($page = 'page-0')
{
	…
}
?>

Pozor na to že parametr je přetypován podle typu defaultní hodnoty. Proto bylo vždy 0.

LuKo
Člen | 116
+
0
-

LM napsal(a):

Pak asi použít dvě routy, nebo upravit výchozí hodnotu actionDefault:

Pozor na to že parametr je přetypován podle typu defaultní hodnoty. Proto bylo vždy 0.

Parametr se do presenteru přidá správně, v tom problém není. Jen jsem chtěl, aby „nultá“ stránka měla url bez parametru /admin/users, místo /admin/users/stranka-0. Samostatný router pomohl, díky za tip ;-)