reprezentace jmena presenteru v URL

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

Prisel jsem na to, ze napr. presenter jmena ahojNette je dostupny i pres alternativni URL ahoj-nette. Zajimalo by me, zda a jak lze toto chovani nastavit, pripadne jake takove aliasy jeste funguji a zda to neni problem napr. pri indexaci, kdyz se stejny obsah indexuje na dvou ruznych URL…

V routeru mam jen jedno pravidlo

<?php

$router = Environment::getApplication()->getRouter();

$router[] = new Route('<presenter>/<view>', array(
    'presenter' => 'Status',
    'view' => 'default',
	),IRouter::SECURED);
?>

PS: lze nejak docilit kombinace IRouter::SECURED s IRouter::ONE_WAY ?

kravčo
Člen | 721
+
0
-

crempa napsal(a):

lze nejak docilit kombinace IRouter::SECURED s IRouter::ONE_WAY ?

sú to bitové príznaky, čiže IRouter::ONE_WAY | IRouter::SECURED

crempa
Člen | 198
+
0
-

Diky, uz me to taky doslo :-)

Jinak k tomu predchozimu bodu, ono tu pomlcku lze dat kamkoli do jmena presenteru, Nette ji vicemene ignoruje. Neco me unika nebo to je chtene chovani? Potrebuju zabezpecit jeden presenter klientskym certifikatem na urovni Apache skrze <LocationMatch> a tato featura me to znacne komplikuje..

_Martin_
Generous Backer | 679
+
0
-

crempa napsal(a):

Prisel jsem na to, ze napr. presenter jmena ahojNette je dostupny i pres alternativni URL ahoj-nette. Zajimalo by me, zda a jak lze toto chovani nastavit, pripadne jake takove aliasy jeste funguji a zda to neni problem napr. pri indexaci, kdyz se stejny obsah indexuje na dvou ruznych URL…

Ono spíše presenter je dostupný pod více adresami, ale Nette automaticky přesměruje na kanonickou adresu (tj. v tomto případě na /ahoj-nette/). Tohle chování mají na starosti filtry Rout, konkrétně metody path2presenter a presenter2path (viz. zdrojový kód).

crempa
Člen | 198
+
0
-

tak jsem zkousel neco jako

<?php

$route = new Route('<presenter>/<view>', array(
    'presenter' => 'Status',
    'view' => 'default',
	),IRouter::SECURED);

$route->setStyleProperty('presenter', Route::PATTERN, '[a-z][a-z0-9.]*');
$router[] =  $route;

?>

a nezda se ze by to slo, pokud prepisu ten regular primo ve zdrojacich tak to funguje, co delam spatne netusis?

Jan Tvrdík
Nette guru | 2595
+
0
-

Takto?

Router::setStyleProperty('presenter', Route::PATTERN, '[a-z][a-z0-9.]*');

$router[] = new Route('<presenter>/<view>', array(
    'presenter' => 'Status',
    'view' => 'default',
), IRouter::SECURED);
David Grudl
Nette Core | 8218
+
0
-

Route::setStyleProperty musí být volané před vytvořením routy.