routování – nefunkční routa
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- masterr
- Začátečník | 141
Chci na routovat adresu Front:En:Default na /en/
module=front
presenter=en
action = default
,ale nemuzu to rozjet.
// tohle je routa na index normálně beží
if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules())) {
$router[] = new Route('index.php', array(
'module' => 'Front',
'presenter' => 'Default',
), Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>/<id>', array(
'presenter' => 'Front:Default',
'action' => 'default',
'id' => NULL,
));
} else {
$router[] = new SimpleRouter('Front:Default:default');
}
a ted si nwm rady s tou routou na Front:En:Default na /en/. Zkoušel jsem toho mrte, ale fakt mi to nejde. Jak na to? Četl jsem nějaky navody, ale nejak to z toho nechapu.
- h4kuna
- Backer | 740
Ahoj,
ta routa co napsal Felix je v pořádku avšak neřeší jazyk. masterr tou routou jak sis ji nadefinoval (module=front presenter=en action = default) popíráš základní pravidlo MVC, jazyk nemůže být presenter, pac by jsi celou logiku řešil v jednom presenteru, respektivě kolik by jsi měl jazyků. V sandboxu v distribuci je ukázka, ale že tě mám rád tak ti sem hodím příklad.
<?php
$router[] = new Route('index.php', array(
Route::MODULE_KEY => 'Front',
Route::PRESENTER_KEY => 'Default',
Presenter::ACTION_KEY => 'default',
'lang' => 'cs',
), Route::ONE_WAY);
$router[] = new Route('<lang [a-z]{2}>/<presenter>/<action>/<id>', array(
Route::MODULE_KEY => 'Front',
Route::PRESENTER_KEY => 'Default',
Presenter::ACTION_KEY => 'default',
'id' => NULL,
));
/* jazyková mutace i pro administraci */
$router[] = new Route('admin', array(
Route::MODULE_KEY => 'Admin',
Route::PRESENTER_KEY => 'Default',
Presenter::ACTION_KEY => 'default',
'lang' => 'cs',
'id' => NULL,
), Route::ONE_WAY);
$router[] = new Route('admin/<lang [a-z]{2}>/<presenter>/<action>/<id>', array(
Route::MODULE_KEY => 'Admin',
Route::PRESENTER_KEY => 'Default',
Presenter::ACTION_KEY => 'default',
'id' => NULL,
));
?>
a do BasePresenteru si dej
<?php
/**
* @persistent
*/
public $lang;
?>
Editoval matata (24. 1. 2011 14:06)