Definování persistentního parametru bez anotace

joseff
Člen | 233
+
0
-

Zdravím. Lze v presenteru nějak definovat persistentní parametr bez anotace. Něco jako metoda addPersistenParameter($name, $defaultValue)?

Díky za radu

David Matějka
Moderator | 6445
+
0
-

teoreticky by melo stacit prekryt statickou metodu getPersistentParams: https://api.nette.org/…ent.php.html#…

(ale nepujde je pridavat dynamicky)

joseff
Člen | 233
+
0
-

Jenže to bych stejně musel do každého presenteru ručně napsat např: public $lang. Takže to už bych tam mohl napsat tu anotaci.

David Matějka
Moderator | 6445
+
0
-

a o co ti jde? nemuzes ten parametr dat do base tridy / do traity?

joseff
Člen | 233
+
0
-

Jde mi o to právě Base třídu nemít. Nepotřebuji ji a dělat Base třídu jen kvůli dvěma řádkům, tedy definování persistentní proměnné mě přijde blbost. Trait zase budu muset psát do každého presenteru a budu na to muset myslet u každého vytvoření nového Presenteru a zase bude ta traita mít jen význam přidání pers. proměnné.

Eda
Backer | 220
+
0
-

@DavidMatějka Takto to šlo před Nette 3, pak byla bohužel tato možnost odstraněna…

https://github.com/…366fc8034842#…

Tohle je jeden z důvodů, proč nechci povyšovat na Nette 3 – nevím o jiném ne úplně hacky řešení.

Šaman
Člen | 2632
+
0
-

Pokud to nechceš psát do každého presenteru ručně, ani použít třídu předka, tak jak ten presenter bude vůbec vědět, že ta proměnná existuje a že s ní může pracovat? :o

ZbyRih
Člen | 3
+
0
-

joseff napsal(a):

Zdravím. Lze v presenteru nějak definovat persistentní parametr bez anotace. Něco jako metoda addPersistenParameter($name, $defaultValue)?

Díky za radu

Tohle bych potřeboval na 2.4 taky, abych z komponenty řekl například když se attachuje tady mám tyhle persistentní parametry. Potřebuju to proto že nemůžu měnit třídu presenteru. presenter dela komponenty dynamicky, čili neví jak se jmenují ani jeslti budou nebo ne. a v komponente mam form a potřebuju si podržet pár id.

F.Vesely
Člen | 368
+
0
-

@ZbyRih V komponente muzes taky pouzivat persistentni parametry viz https://doc.nette.org/…n/components#…

ZbyRih
Člen | 3
+
0
-

Vyřešeno:

<?php

$form->setAction(
	new Link($this->presenter, 'this', [
		$this->getParameterId('productId') => $this->productId,
		$this->getParameterId('attrs') => $this->attrs
]));

?>

form v komponentě v komponentě
uznávám. je to trochu jiný případ než chtěl @joseff

@FVesely anotaci v komponentě mám, čili sem se dostal k označení komponenty jako persistentní v presenteru, k presenteru nemůžu, ergo vyřešeno takto.

Editoval ZbyRih (20. 5. 2020 9:41)