jak nastavit Router::FILTER_OUT

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

ahoj, mam tento router:

$frontRouter[] = $route = new Route('[<locale cs|en|de>/]<slug>/<action>/<id>',
                array(
                    'presenter'=>'Homepage',
                    'action'=>'default',
                    'locale'=>'cs',
                    'id'=>NULL,

                    NULL => array(
                        Route::FILTER_IN => function($params) {

				......
                            return $params;
                        },
                        Route::FILTER_OUT => function($params) {
				???????
                            return $params;
                        }
                    )
                    ));

jak nastavit $params ve FILTER_OUT aby pro presenter Kontakty se zobrazilo uri „kontakty-nasi-firmy“

vosy
Člen | 532
+
0
-

zkousim:

		$frontRouter[] = new Route('[<locale cs|en|de>/]<slug>/<action>/[<id>]',
				array(
					'presenter'=>'Homepage',
					'action'=>'default',
					'locale'=>'cs',
					'id'=>NULL,

					NULL => array(
					    Route::FILTER_IN => function($params) {

							unset($params['slug']);

							$params['presenter'] = 'Contacts';

					        return $params;
					    },
					    Route::FILTER_OUT => function($params) {

							$params['presenter'] = 'nase-kontakty';

					        return $params;
					    }
					)
					));

Presenter se zobrazi spravny ale kdyz mam $presenterUrl = new Url($this->link(‚:Front:Contacts:‘));

tak vytvoreny odkaz je „No route for Front:Contacts:default(locale=cs)“

problem mozna bude v „<slug>“ protoze kdyz to zmenim na „<presenter>“ tak odkaz se vytvori, ale kdyz tam necham <presenter> tak uri se mi prevede na nazevpresenteru tzn nase-kontakty na ⇒ NaseKontakty

Editoval vosy (3. 6. 2014 20:09)

David Matějka
Moderator | 6445
+
0
-

Zkus na FILTER_OUT nastavit presenter na Homepage aby to matchnulo tu routu a nastav odpovidajici slug

vosy
Člen | 532
+
0
-

hmm tak tomu moc nerozumim

David Matějka
Moderator | 6445
+
0
-
Route::FILTER_OUT => function($params) {
    $params['slug'] = ....;
    $params['presenter'] = 'Homepage';

    return $params;
}
vosy
Člen | 532
+
0
-
$router[] = $frontRouter = new RouteList('Front');
		$frontRouter[] = new Route('[<locale cs|en|de>/]<slug>/<action>/[<id>]',
				array(
					'presenter'=>'Homepage',
					'action'=>'default',
					'locale'=>'cs',
					'id'=>NULL,

					NULL => array(
					    Route::FILTER_IN => function($params) {

							unset($params['slug']);

							$params['presenter'] = 'Contacts';

					        return $params;
					    },
					    Route::FILTER_OUT => function($params) {

					    	$params['slug'] = 'nase-kontakty';
							$params['presenter'] = 'Homepage';

					        return $params;
					    }
					)
					));

vysledek:

„No route for Front:Contacts:default(locale=cs)“