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 HomepagePresenter
u 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)