Routování – nejkratší možná cesta
- KingKoca
- Člen | 25
Ahoj, pouzivam aktualni verzi Nette (2.0.6), php 5.3.
Pri pouziti routy:
<?php
$router[] = new Route($prefix . 'admin[/<lang [a-z]{2}>][/<module>[/<presenter>[/<action>[/<id>]]]]', array(
'module' => 'Auth',
'presenter' => 'Homepage',
'action' => 'default',
'lang' => 'cs'
));
?>
Se mi vsecky url adresy v jazyce ‚cs‘ automaticky redirectuji na tu
samou url akorat bez parametru lang (tedy
http://localhost/admin/cs/news
na
http://localhost/admin/news
). Toto chovani se mi libi, ale chtel
bych ho i pri pouziti routy:
<?php
$router[] = new \Nette\Application\Routers\Route('[<lang [a-z]{2}>/][<path .*>]',array(
'presenter'=>'Front',
'action'=>'Default',
'lang'=>'cs'
));
?>
To se vsak nedeje, v teto route k zadnemu presmerovani nedochazi a musim redirect provadet rucne. Je nejaky zpusob, jak vynutit redirect, pokud mam v url defaultni hodnoty?
- h4kuna
- Backer | 740
KingKoca napsal(a):
Felix napsal(a):
<?php $router[] = new \Nette\Application\Routers\Route('[<lang [a-z]{2}>/]<path .*>',array( 'presenter'=>'Front', 'action'=>'Default', 'lang'=>'cs' )); ?>
Diky za radu, ale bohuzel, porad to v url nechava tu ‚cs‘ cast.
Tohle za normálních okolností funguje já to tak používám, v hlavním presenteru by jsi měl mít: (a to snad není podmínka)
<?php
/** @persistent */
public $lang;
?>
Editoval h4kuna (14. 11. 2012 14:27)
- KingKoca
- Člen | 25
Diky, ale nic nefunguje. Pravdepodobne jsou routery moc velka magie :) Nejspis to bude tou casti <path .*> – je to takova neurcita cesta, neni tak specifikovan zadny konkretni presenter, takze router neumi vygenerovat novou url adresu. To je podle meho nazoru duvod, proc to nejde.
Nechme to byt, to presmerovani udelam v presenteru (nebo filter_in funkci), je to jednoducha podminka.
Diky