Dvě komponenty na jedné stránce, jak zachovávat stav všech mezi signály?
- Krab
- Člen | 10
Ještě jsem narazil na problém, že nevím, jak bych měl zachovávat stav více komponent, které jsou na jedné stránce.
Mám teď na jedné stránce 2 komponenty. Pokud kliknu na tlačítko v jedné komponentě, tak se ale ztratí aktuální stav té první komponenty, protože prostě ten ty linky vedoucí na signály komponent neobsahují data pro jiné komponenty, ale jen pro své.
Možná to je něco s těmi persistentními parametry, ale nevím, přišlo by mi to takové neohrabané a ani nevím, kde přesně bych měl kontrolovat ty persistentní parametry, jestli v nich jsou nějaká data. V konstruktoru komponenty tam asi ještě nebudou, když se objekt teprve vytváří…
- Krab
- Člen | 10
matej21 napsal(a):
To je divný…, např. mám setter, který si mi mimo vlastní nastavení nějaké proměnné ještě udělá dodatečnou logiku např. výpočtu nějakých dalších členských proměnných. No a teď mi najednou někdo nastaví ten parametr jinak než tím setterem (nette ty per. parametry). Jak pak poznám, jestli mám provést tu funkcionalitu toho settru dodatečně nebo ne? Nebo si ten parametr nějak nastavím třeba v továrničcce a nette mi ho pak přepíše.
- David Matějka
- Moderator | 6445
nevim, jestli te dobre chapu.. mas na mysli neco takovyho?
class SomeControl extends UI\Control
{
/** @persistent */
public $foo;
protected $bar;
public function setFoo($foo)
{
$this->foo = $foo;
$this->bar = do_something($foo);
}
}
jo?
a pri obnove persistentnich parametru se neobnovi hodnota bar, jo?
napadaji me dva zpusoby, jak to vyresit:
- prepsat v controlu metodu loadState – ta se stara o obnovu parametru komponenty. nejlepsi bude, kdyz zavolas load stateState predka a provedes potom nejaky vypocty
- na clenskou promennou $bar nesahat z kodu primo, ale pres getter, ktery provede kontrolu, zda doslo k tomu vypoctu
- Krab
- Člen | 10
matej21 napsal(a):
nevim, jestli te dobre chapu.. mas na mysli neco takovyho?
class SomeControl extends UI\Control { /** @persistent */ public $foo; protected $bar; public function setFoo($foo) { $this->foo = $foo; $this->bar = do_something($foo); } }
jo?
a pri obnove persistentnich parametru se neobnovi hodnota bar, jo?
napadaji me dva zpusoby, jak to vyresit:
- prepsat v controlu metodu loadState – ta se stara o obnovu parametru komponenty. nejlepsi bude, kdyz zavolas load stateState predka a provedes potom nejaky vypocty
- na clenskou promennou $bar nesahat z kodu primo, ale pres getter, ktery provede kontrolu, zda doslo k tomu vypoctu
Jo něco podobného. Mělo by se tam do toho frameworku pridat neco, aby se kontrolovalo, jestli existuje nejaky setter nebo neco. Treba jako /** @persistent(setWeeks) */