Podmienene zobrazenie inputu
- vladimir.biro
- Člen | 163
Ahojte.
Prosim vas, je nejako mozne podmienit zobrazovanie formularoveho prvku v sablone formularu (v pripade vlastnej sablony formularu) podla toho, ci je v createComponentForm() alebo nie je.
Niektore prvky chcem mat vo formulari len za urcitych podmienok (napriklad ak prihlaseny user je admin) no chcel by som podmienku mat len v PHP. Nie v sablone.
Dufam, ze som to napisal zrozumitelne :)
Dakujem za rady.
- Ondřej Kubíček
- Člen | 494
pokud generuješ šablonu automaticky, stačí ti v php:
if ($user->isLoggedIn()) {
$form->addText(...)
}
pokud manuálně vykresluješ šablonu, musíš přidat podmínku i tam:
<div n:if="$user->isLoggedIn()">
<label>...
<input ... >
</div>
- vladimir.biro
- Člen | 163
Ondřej Kubíček napsal(a):
pokud generuješ šablonu automaticky, stačí ti v php:
if ($user->isLoggedIn()) { $form->addText(...) }
pokud manuálně vykresluješ šablonu, musíš přidat podmínku i tam:
<div n:if="$user->isLoggedIn()"> <label>... <input ... > </div>
To ze musim nejaku podmineku dat aj do sablony je mi viacmenej jasne. Slo mi skor o to, ci sa nada vlozit nejaka podmienka priamo suvisiaca s prvkom. Nieco ako:
<div n:if="$name">
{label name}
{input name}
</div>
… viem ze to takto nejde, ale nieco na ten sposob. Aby som do sablony s formularom vkladat dalsie premenne okrem formularu.
Editoval vladimir.biro (10. 12. 2018 18:03)
- vladimir.biro
- Člen | 163
ali napsal(a):
Ja v sablonach pouzivam
$form->offsetExists(input)
No super, presne toto som potreboval .. este som to sice neodskusal, ale verim tomu, ze by si si to nevymyslel a ze to bude fungovat :D
Dakujem.
- vladimir.biro
- Člen | 163
CZechBoY napsal(a):
Ono se dá i přes
$form->getComponent($inputName, false) !== null
nebo array access, je víc cest jak se toho dopátrat.
Dovolim si drobnu upravu:
$form->getComponent('inputName', false) !== null
Editoval vladimir.biro (11. 12. 2018 14:45)
- vladimir.biro
- Člen | 163
Otestoval som obe moznosti a obe funguju. SUPER. Dakujem.
Vlastny rozbor:
$form->offsetExists('input')
je vlastne
public function offsetExists($name)
{
return $this->getComponent($name, false) !== null;
}
v containeri form controls
…čim ušetríme v šablóne jeden parameter, a trochu to pridá na prehladnosti HTML kódu.
Príklad použitia:
<div n:if="$form->offsetExists('name')">
{label name}
{input name}
</div>
- David Matějka
- Moderator | 6445
offsetExists se vola pri pouziti isset na arrayaccess objekt. takze jeste v kombinaci s ifset makrem jde ten kod zjednodusit na
<div n:ifset="$form[name]">