Problém s routováním
- Vyki
- Člen | 388
Zdravím,
nevěděl by prosím někdo jak snadno vytvořit routu pro:
https://doc.nette.org/cs/ → View:default, id="dokumentace"
https://doc.nette.org/cs/?action=Edit → Edit:default, id="dokumentace"
..toto jsem našel ve článku víceúrovňové
routy
..přijde mi zbytečné kvůli takové „na první pohled blbosti“ psát
vlastní router, ale opravdu nevím jak tohoto výsledku jinak docílit. Na
svém webu bych potřeboval přesně tento tvar routy. V aplikaci zatím
používám:
<?php
$router[] = new Route('<id> ? <action>', array(
'presenter' => 'View',
'action' => 'Default',
'id' => NULL,
));
?>
..to však neobslouží změnu presenteru. Slovně řečeno podmínka by měla znít takto: „Nastav presenter na hodnotu View, když action je v url nastaveno“.
Editoval Vyki (30. 7. 2009 1:10)
- Vyki
- Člen | 388
Jod napsal(a):
Lepšie bude mať jeden presenter Default a akcie View a Edit. Jedna to tak každý robí a aj routovanie je hračka.
Fakt to daj do jedného presenteru, ak nato nemáš nejaký smrtelný dôvod mať to v dvoch :D:D:D
Smrtelný důvod rozhodně ne, ale spíše bezpečnostní :o) Snažím se v aplikaci striktně odlišit zabezpečenou část od té nezabezpečené. V rom presenteru edit mám ve startup ověření zda je člověk přihlášen. Kdybych to měl v jednom presenteru s View, musel bych u každého citlivého render, action.. ověřovat zda je uživatel přihlášen. Přijde mi lepší mít tuto administrační část oddělenou v jiném presenteru. Nebyl by ještě jiný způsob jak dosáhnout tohoto členění?
- Vyki
- Člen | 388
pmg napsal(a):
$router[] = new Route('<id> ? action=<presenter>', array( 'presenter' => 'Default', 'action' => 'default', 'id' => NULL, ));
Nemělo by to být spíše? :
<?php
$router[] = new Route('<id> ? presenter=<action>', array(
'presenter' => 'Default',
'action' => 'default',
'id' => NULL,
));
?>
Netuším.. jdu to testnout
Editoval Vyki (30. 7. 2009 1:47)
- Vyki
- Člen | 388
pmg napsal(a):
Jen jsem tam místo presenteru
View
dalDefault
. Potvrzuju, že jsem ho myslel přesně tak, jak jsem napsal. Věř tomu nebo ne, sám jsem řešení před uveřejněním otestoval. :-)
A jak potom bude vypadat link?
pro view zrejme takto:
<a href="{plink Default:default, $id}" class="pap">{$treename}</a>
a pro ten edit presenter:
<a href="{plink Edit:default, $id}" class="pap">{$treename}</a>
????
- pmg
- Člen | 372
To se ti zdá tak moc jednodušší se zeptat než to prostě zkusit?
Dobře, v šabloně presenteru stačí používat link
místo
plink
, a pokud je view default
, lze ho vynechat. Když
si v té routě změníš výchozí presenter na View
, nemusíš
používat nicneříkající Default
, to jsem tam omylem
změnil.
{link View:, $id}
- Vyki
- Člen | 388
pmg napsal(a):
To se ti zdá tak moc jednodušší se zeptat než to prostě zkusit?
Dobře, v šabloně presenteru stačí používat
link
místoplink
, a pokud je viewdefault
, lze ho vynechat. Když si v té routě změníš výchozí presenter naView
, nemusíš používat nicneříkajícíDefault
, to jsem tam omylem změnil.{link View:, $id}
Jsem to samozřejmě otestoval, jenom mi to kvůli drobnosti neběhalo. Ten
plink
tam mám kvůli tomu, že menu generuji ve zvláštním
controlu. Jinak díky moc