Persistentní parametr se nepřenáší
- mildabre
- Člen | 62
Mám na svém lokálním serveru:
Nette Framework 2.0 a PHP 5.3
Použil jsem persistentní parametr takto:
Routy:
<?php
// bootstrap.php - nastavení rout
$container->router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$container->router[] = new Route('<presenter>/<action>[/<id>][/<fkey>]', 'Homepage:default');
?>
Presenter:
<?php
// BasePresenter
class BasePresenter extends Nette\Application\UI\Presenter
{
/** @persistent */
public $fkey;
.....
}
?>
Tím jsem si v souladu s dokumentací Nette nastavil „persistentní“ parametr, který by se měl automaticky předávat do všech odkazů generovaných Nette Frameworkem v presenterech poděděných z BasePresenteru (celá aplikace).
Url má tyto části:
- presenter
- akce
- nepovinný parametr id
- nepovinný parametr fkey
V odkazech na jednotlivé presentery v hlavním menu mám Presenter:default a url vypadají takto:
- /presenter/
Persistanetní parametr je zadaný natvrdo v tomto odkazu:
- /presenter/akce/id/fkey
Url v hlavním menu ale neobsahují třetí část url – parametr id a url mají tvar:
- /presenter/default/fkey
Chybějícím id vzniknou problémy – hodnota fkey se těmito odkazy přenese do id a fkey svoji hodnotu ztratí. Persistentní parametr tedy za těchto okolností persistentní není. Chtělo by to blíže prozkoumat autory frameworku (budou-li mít na to čas) a nějak to ošetřit – buďto zajistit nezrušitelnou vazbu mezi persistentním parametrem a jeho hodnotou v url, nebo na toto upozornit v dokumentaci.