Ignorování výchozí hodnoty persistentního parametru potomka

- Vyki
- Člen | 388
Zdravím, je možné že si stejné chyby všimnul ještě někdo jiný, ala
na fóru jsem nic nenašel.
Mám HomepagePresenter, který je potomkem
BasePresenter. V HomepagePresenteru si nadefinuji
persistentní parametr id.
<?php
class HomepagePresenter extends BasePresenter
{
/** @persistent */
$id = 1;
}
class BasePresenter extends Presenter
{
protected function startup()
{
parent::startup();
Debbuger::barDump($this->getParam('id'));
}
}
?>
Pokud v URL nenastavím parametr id, zůstane mu logicky
výchozí hodnota 1. Pokud ji ale zjišťuji v rodičovské
třídě, vyhodí NULL protože nette do pole argumentů výchozí
hodnotu persistentního parametru nenačte. Situace je jiná pokud
id změním v URL na hodnotu 3. Potom mi je dumpnutá hodnota
správná.

- Vyki
- Člen | 388
Já s tím persistentním parametrem potomka pracuji v přípdadě, když chci zjistit zda má uživatel právo pracovat s tímto id. Ten parametr se může pokaždé lišit svým názvem, to záleží na té třídě toho potomka. Mě to nikterak neomezuje, ale za chybu to považuji. Fixnul jsem to v BasePresenteru nějak takto:
public function checkPersistentParam($name)
{
if(in_array($name, $this->getPersistentParams())){
if(isset($this->params[$name]) === FALSE){
$this->params[$name] = $this->{$name};
}
return TRUE;
}
return FALSE;
}
Editoval Vyki (18. 9. 2011 10:03)