Jednodušší Nette\Application\Route

před 9 lety

David Grudl
Nette Core | 6864
+
0
-

Novinky jsou tři:

  1. zjednodušení, kdy pole s dvojicí presenter a action můžete nahradit za řetězec Presenter:action
  2. možnost uvádět výchozí hodnoty přímo v masce pomocí <param=value>
  3. v konstruktoru MultiRouteru lze specifikovat omezení pro konkrétní modul (experimentální)

A příklady použití:

// dříve ee
$router[] = new Route('index.php', array(
    'presenter' => 'Homepage',
    'action' => 'default',
), Route::ONE_WAY);

// nyní jééé
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
// dříve eee
$router[] = new Route('<presenter>/<action>/<id>', array(
    'presenter' => 'Homepage',
    'action' => 'default',
    'id' => NULL,
));

// nyní jééé!
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:');
// dříve
$router[] = new Route('edit/<name>', array(
    'presenter' => 'Admin:Page',
    'action' => 'edit',
    'name' => 'homepage',
));

// nyní
$router[] = new Route('edit/<name=homepage>', 'Admin:Page:edit');

S pevným modulem

Dříve eee:

$router[] = new Route('index.php', array(
    'presenter' => 'Front:Default',
), Route::ONE_WAY);

$router[] = new Route('admin/<presenter>/<action>', array(
    'module' => 'Admin',
    'presenter' => 'Dashboard',
    'action' => 'default',
));

$router[] = new Route('<presenter>/<action>', array(
    'module' => 'Front',
    'presenter' => 'Homepage',
    'action' => 'default',
));

nyní jéééé:

$admin = $router[] = new MultiRouter('Admin');
$admin[] = new Route('admin/<presenter>/<action>', 'Dashboard:default');

$front = $router[] = new MultiRouter('Front');
$front[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$front[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

před 9 lety

loov
Člen | 49
+
0
-

těm „nette slabším jedincům“ (jako jsem já), bych ještě rád doplnil, že pokud budete tuto novinku zkoušet, nezapomeňte jako já :) na

<?php
    $router = $application->getRouter();
?>

stále je to potřebný kus kódu :)

před 9 lety

Vyki
Člen | 391
+
0
-

To už nebude fungovat pro moduly?

<?php
$router[] = new Route('<presenter>/<action>','Front:Homepage:default');
//myšleno Front jako module, Homepage jako presenter, default action
?>

nebo je to zpětně kompatibilní?

Editoval Vyki (24. 11. 2010 9:46)

před 9 lety

David Grudl
Nette Core | 6864
+
0
-

To fungovat bude.