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
+
0
-

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.

Felix
Nette Core | 1190
+
0
-

zkus:

<?php

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

?>

Editoval Felix (24. 1. 2011 0:52)

h4kuna
Backer | 740
+
0
-

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)