Redirect, routování a link
- Elijen
- Člen | 171
Nedávno jsem tu měl problém s prázdným
action u formuláře. Problém jsem vyřešil doplněním metody
attached `třídy `AppForm
. Nicméně hned v dalším kroku jsem
opět narazil na problém.
$this->redirect('this');
Laděnka vyhodí výjimku „InvalidLinkException No route for Articles:search()“
Debug::dump(array($this->lastCreatedRequest, $httpRequest));
Výstup:
Notice: Undefined variable: httpRequest in /home/.../app/presenters/ArticlesPresenter.php on line 144
array(2) {
0 => NULL
1 => NULL
}
Podle mě je to routováním, ale osobně v routách nic vyloženě špatně nevidím :(
$router = $application->getRouter();
$router[] = new Route('[index.php]', array(
'presenter' => 'Homepage',
'action' => 'default',
));
$router[] = new Route('[<admin admin>/]<type texts|books|documents|about>/<id>', array(
'presenter' => 'Articles',
'action' => 'show',
));
$router[] = new Route('[<admin admin>/]<type about>', array(
'presenter' => 'Articles',
'action' => 'show',
));
$router[] = new Route('[<admin admin>/]<type texts|books|documents>', array(
'presenter' => 'Articles',
'action' => 'search',
));
Netušíte někdo, kde je chyba? Díky moc.
Editoval Elijen (4. 9. 2010 15:27)
- Elijen
- Člen | 171
Jaj, myslis u toho dumpu, ne? Tam jsem to vazne jaksi zapomel :) … ale dump jsem delal jen proto, abych videl, proc to vyhnilo. V redirectu by si to Nette melo resit samo.
{link this} vyhodi „#“, takze bude skutecne problem s routama … podle me se tam nepreda parametr type, stejne jako to bylo v topicu s formularem. Proc ale? Musim ho nastavit jako persistentni nebo ho predat rucne?
Editoval Elijen (4. 9. 2010 15:59)
- zarubik
- Člen | 31
JJ, proto jsem psal, že to tvůj problém neřeší :)
Podle těch rout, bych přidal do BasePresenteru
/** @persistent string */
public $type;
Což si myslím, že by ti vyřesilo i minulý problém.
… Tak jsem to vyzkoušel jak to máš a funguje to. Musí tam být persistent pro $type.
Editoval zarubik (4. 9. 2010 16:30)
- Elijen
- Člen | 171
zarubik napsal(a):
JJ, proto jsem psal, že to tvůj problém neřeší :)
Podle těch rout, bych přidal do BasePresenteru
/** @persistent string */ public $type;
Což si myslím, že by ti vyřesilo i minulý problém.
… Tak jsem to vyzkoušel jak to máš a funguje to. Musí tam být persistent pro $type.
Funguje, dík moc :) … i když po pravdě mi přijde nastavování persistentních parametrů pomocí phpDoc jako prasárna.