Dynamické nastavenie štandardných hodnôt persistentných parametrov

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tino415
Člen | 46
+
0
-

Ahojte,

chcel by som sa spýtať či je možné nejakým spôsobom meniť default hodnoty persistentných parametrov, npr ak by som ich chcel mať zadafinované v konfigu/databáze.

za odpoveď ďakujem.

CZechBoY
Člen | 3608
+
+1
-

Pokud chceš mít nějakou výchozí hodnotu persistentního parametru tak si zkontroluj, že už nemá hodnotu a vlož hodnotu z db.

/** @persistent */
public $abc;

public function startup()
{
	if ($this->abc === null) {
		$this->abc = $this->repository->getDefaultValueForAbc();
	}
}
tino415
Člen | 46
+
0
-

Ale tým pádom mi bude generovať nové url z tím parametrom obsiahnutým v nich, či ?

CZechBoY
Člen | 3608
+
0
-

Ano, o tom persistentní parametry jsou ;-)

Martk
Člen | 661
+
+1
-

Bez parametrů v url:

/** @persistent */
public $abc;

public function getAbc() {
	return $this->abc !== NULL ? $this->abc : $this->repository->getDefaultValueForAbc();
}

A už jen volat funkci getAbc

Editoval Antik (21. 6. 2016 22:49)

tino415
Člen | 46
+
0
-

@Antik Jedine čo tu mám problém je že ja používam getParameters a keď prekonám ten tak sa mi zase dostanú ti defaultne hodnoty do url.

@CZechBoY Ide o to že je to filter z veľkým množstvom hodnôt, a pokiaľ sa hodnota attributu rovná defaultnej, nechcem aby sa nachádzala v URL.

David Matějka
Moderator | 6445
+
+1
-

slo by to vyresit prekrytim a vlastni implementaci metod loadState a saveState

CZechBoY
Člen | 3608
+
0
-

@tino415 Tak ji nedávej do url vůbec. Pokud tam není tak si v repozitáři prostě dosaď defaultní hodnotu.

if (!empty($filters['abc']) {
	$this->applyFilter('abc', $filters['abc']);
} else {
	$this->applyDefaultFilter('abc');
}
tino415
Člen | 46
+
0
-

@CZechBoY lenže data filtru sa používajú na viacerích miestach, ide o viac vrstvovu aplikáciu ktorá na základe filtra ťahá dáta z rôznych api, to by som musel vo všetkých repozitároch implementovať.

@DavidMatějka Díky toto vypadá asi najlepšie, ešte som to netestoval, zatiaľ to mám fixnuté podľa odpovede @Antik s tým že namiesto get parameters si v cikle tie parametre získava z presentru.

Ďakujem za pomoc.