moduly, submoduly a route list

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

mam takuto strukturu modulov:
Web
–Profile
–Users
–Atd.

routy

container->router[] = $webRouter = new RouteList('Web');
$webRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');

adresy su teraz vo formate:
http://tripin.local/…le.homepage/, http://tripin.local/users.homepage/

co chcem dosiahnut: (ak som na homepage presenteri)
http://tripin.local/profile/http://tripin.local/users/

ako na to?

dakujem

Vyki
Člen | 388
+
0
-

Nastav si na to překladový slovník podobný tomuto.

public function aliasToPresenter($alias)
{
    $aliases = array(
        'profile' => 'Pofile:Homepage',
        'users' => 'Users:Homepage'
    );
    if(isset($aliases[$alias]))
        return $aliases[$alias];
    else
        return NULL;
}

public function presenterToAlias($presenter)
{
    $aliases = array(
        'Pofile:Homepage' => 'profile',
        'Users:Homepage' => 'users'
    );
    if(isset($aliases[$presenter]))
        return $aliases[$presenter];
    else
        return NULL;
}

Route::addStyle('#pres');
Route::setStyleProperty("#pres", Route::FILTER_IN, 'aliasToPresenter');
Route::setStyleProperty("#pres", Route::FILTER_OUT, 'presenterToAlias');

$router[] = new Route('<presenter #pres>[/<action>[/<id>]]', array(
    	'action' => 'default',
    	'id' => NULL,
));

Edit: Jinak více najdeš zde v dokumentaci

Editoval Vyki (12. 8. 2012 22:14)

bazo
Člen | 620
+
0
-

hm, no myslel som, ze to pojde nejak jednoducho poriesit rovno v tej route. ale dik.

Vyki
Člen | 388
+
0
-

Já to dělám tak, že všechny filtry dávám do zvláštní třídy. Mám totiž některé, které pracují i s databází a řeším tam rovnou i cachování.