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í.