Vlastní renderování file inputu, obalení inputu spanem
- flamengo
- Člen | 135
Ahoj, řeším následující situaci. V adminu používám na renderování formulářů lehce upravený render Bs3FormRenderer.
Pro formulářový prvek UploadControl
se vygeneruje toto
(trochu zjednodušeno):
<div class="form-group">
<div>
<label for="frm-form-image">Obrázek</label>
</div>
<div>
<input name="image" id="frm-form-image" type="file">
<span id="frm-form-image_message"></span>
</div>
</div>
Potřeboval bych však input
obalit spanem
a
přidat další HTML prvky, asi nějak takto:
<div class="form-group">
<div>
<label for="frm-form-image">Obrázek</label>
</div>
<div>
<span class="fileinput-button btn btn-primary">
<span>
<i class="fa fa-plus"></i> Vložit soubor
</span>
<input type="file" name="image" id="frm-form-image">
</span>
<span id="frm-form-image_message"></span>
</div>
</div>
V renderu (upavený Bs3FormRenderer) bych si představoval něco jako:
private function controlsInit() {
// ...
foreach ($this->form->getControls() as $control) {
// ...
elseif ($control instanceof Controls\UploadControl) {
// zde bych si představoval patřičný kód, který mi input obalí spanem atd.
}
// ...
}
}
ale nevím, zda to je správná cesta.
- Mohl bych renderovat ručně, ale formulářů bude hodně.
- Mohl bych inputu doplnit CSS třídu a poté použít jQuery a veškeré potřebné HTML doplnit.
Mě by ale stejně zajímalo, jak by se to dalo udělat přímo
v renderu.
Předem moc díky za radu, info.
- GEpic
- Člen | 566
Já se inspiroval twigridem (hlavně definicí bloků – v tomto
případě tedy jednotlivých typů form. prkvů). Nadefinoval jsem si veškeré
inputy jako text, number, email, select boxy, checkboxy, dokonce i výchozí
podporu pro datetime picker, atp. Navíc jsem přidal podporu pro určování
šířek na různých zařízeních, možnost přidat ikonu, a podobně (pomocí
setAttribute
přímo na prvku, ze kterého jsem to potom vytáhl,
ale tyto atributy už jsem dále na prvku nevypisoval – trošku tricky, ale
who cares). A v případě potřeby si jednotlivé prvky přetížím
v konkrétním formuláři a jeho vlastní šabloně.
Editoval GEpic (29. 7. 2016 12:04)