Nette\Schema odstranění nepovinné hodnoty z výsledku´processoru
- Spectator
- Člen | 48
Ahoj,
$structure = Expect::structure([
'povinne' => Expect::string()->required(true),
'nepovinne' => Expect::string()->required(false),
])->castTo('array');
Pokud mi v datech nepřijde ono ‚nepovinne‘, tak bych rád nějakým způsobem tuto položku odstranil i z výsledku processoru, aby vůbec ve výsledku nebyla ani jako NULL. Tedy něco jako:
$structure->transform(function ($data) {
if (!$data['nepovinne']) {
unset($data['nepovinne']);
}
return $data;
});
Teoreticky si umím představit něco jako
// ...
'nepovinne' => Expect::string()->required(false)->castTo('undefined')
// ...
Dá se to nějak nebo na to jdu špatně?
- jeremy
- Člen | 54
$structure = Expect::structure([
'povinne' => Expect::string()->required(true),
'nepovinne' => Expect::string()->required(false),
])->skipDefaults()->castTo('array');
Dokumentace: Schema – Struktury
Taky by se asi dalo pouzit array_filter()
na vysledku
processoru, ale tohle je jednodussi.
Edit: Asi taky zalezi na strukture, skipDefaults()
na takto
jednoduchou strukturu je v pohode, ale pokud chces zanechat defaultni hodnoty
krome null
, tak by asi bylo vhodnejsi pouzit
transform()
s array_filter()
.
$structure = Expect::structure([
'povinne' => Expect::string()->required(true),
'nepovinne' => Expect::string()->required(false),
])->castTo('array')->transform(fn($data) => array_filter($data, fn($value) => $value !== null));
Editoval jeremy (12. 3. 14:26)
- Spectator
- Člen | 48
jeremy napsal(a):
$structure = Expect::structure([ 'povinne' => Expect::string()->required(true), 'nepovinne' => Expect::string()->required(false), ])->skipDefaults()->castTo('array');
Dokumentace: Schema – Struktury
Taky by se asi dalo pouzit
array_filter()
na vysledku processoru, ale tohle je jednodussi.
No tak to jsem dobře slepej. Hledám to tam jak divej a tohle přeskočím. Díky moc!