Ako spravit 2 url adresy pre jeden presenter

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

Ahojte

Chcem dosiahnut aby ked zadam

nieco.com/kontakt – aby ostalo tato url a obsah za zobral z presentera Contact
nieco.com/contact – aby ostalo tato url a obsah za zobral taktiez z presentera Contact

ak totiz spravim toto

$router[] = new Route('<presenter>/<action>/<id>', [
            'presenter' => [
                Route::VALUE => 'Homepage',
                Route::FILTER_TABLE => [
                    // řetězec v URL => presenter
                    'kontakt' => 'Contact',
                ],
            ],
            'action' => 'default',
            'id' => NULL,
        ]);

tak routu nieco.com/contact mi zmeni na nieco.com/kontakt

Dakujem

blaztar
Člen | 93
+
0
-

Framework se stará o to, aby na určitý obsah vedla pouze jedna url (dokumentace).

Toto chování se dá vypnout v konktrétním presenteru, např:

class ContactPresenter extends Nette\Application\UI\Presenter
{
	public function startup()
	{
		parent::startup();

		$this->autoCanonicalize = FALSE;
	}
}
MKI-Miro
Člen | 271
+
0
-

dakujem

ale toto mi pride take ze ja zle rozmyslam

ako inak spravne spravit viacjazycny web bez toho aby som pre kazdy jazyk musel mat vlastny controller?

greeny
Člen | 405
+
0
-

Uděláš si routu pro cz a routu pro en, v cz definuješ filter table a v en nedefinuješ :)

MKI-Miro
Člen | 271
+
0
-

asi potrebujem presnejsi navod lebo toto

$router[] = new Route('<presenter>/<action>/<id>', [
            'presenter' => [
                Route::VALUE => 'Homepage',
                Route::FILTER_TABLE => [
                    // řetězec v URL => presenter
                    'kontakt' => 'Contact',
                ],
            ],
            'action' => 'default',
            'id' => NULL,
        ]);

        $router[] = new Route('contact', 'Contact:default');

mi stale zobrazi v url /contact

greeny
Člen | 405
+
0
-

Myslím, že něco takovýho by ti mohlo fungovat

$router[] = new Route('cs/<presenter>/<action>/<id>', [
	'presenter' => [
		Route::VALUE => 'Homepage',
		Route::FILTER_TABLE => [
			'kontakt' => 'Contact',
		],
	],
	'action' => 'default',
	'id' => NULL,
	'lang' => 'cs',
]);
$router[] = new Route('<lang=en>/<presenter>/<action>/<id>', [
	'presenter' => 'Homepage'
	'action' => 'default',
	'id' => NULL,
]);