Přidání html prvku do formuláře
- kleinpetr
- Člen | 480
Ahoj, chci se zeptat
- jak se dá jednoduše přidat nějaký html prvek do formu.
něco jako
$form->addHtml('<div>...</div>');
například přidám do formu pár inputů poté chci vykreslit nějaký html kus a poté zase další formulářové prvky.
- jak mohu nechat zmizet label u checkboxListu ? Koukal jsem zde na nějaká vlákna a řešením bylo přidat na konec elementu
->getPrototypeLabel()->setClass('hidden') //nebo tak nějak
to mi ale v checkboxListu nastavilo hidden u každého labelu, což je špatně.
Díky.
- Filip Klimeš
- Nette Blogger | 156
V Tvém případě bych použil manuální rendering.
(Ne)vykreslit label můžeš podle své logiky nějak takhle:
{foreach $form[myCheckboxList]->items as $key => $label}
{if $key !== 'withoutLabel'}<label n:name="gender:$key">{/if}
<input n:name="gender:$key">
{if $key !== 'withoutLabel'}{$label}</label>{/if}
{/foreach}
- romiix.org
- Člen | 343
Element addHtml() si musíš doprogramovat.
Tiež som ho potreboval, nie je to nič zložité.
Komponentu žial nemam na githube a ani pri sebe.
- H0w4rd
- Člen | 96
Ad 1 – je potřeba přidat vlastní formulářový prvek. Hned se můžu podělit o nově nabyté znalosti ze školení ;-)
Vytvoř si třídu:
class Div extends Nette\Forms\Controls\BaseControl
{
function getControl()
{
return '<div>...</div>';
}
}
A potom to hoď do formuláře takhle:
$form["neco"] = new \Div();
Samozřejmě nazvi tu třídu nějak lépe a přidej si tam nějaký text, který se vloží do divu. Je možné i rozšířit form o další metodu, abys to mohl dělat hezčím způsobem:
Nette\Object::extensionMethod('Nette\Forms\Container::addDiv', function($form, $name, $label = NULL){
$form[$name] = new \Div($label);
});
A pak už můžeš psát:
$form->addDiv("nazev", "text");
Ad 2 – to bys také dokázal udělat pomocí vlastního formulářového
prvku, nedoporučuje se dědit přímo checkbox, i když by to asi taky šlo
(zavolat parent metodu a upravit výstup), ale spíš oddědit ChoiceControl a
udělat si vlastní checkbox.
Přiznám se, že jsem to zatím řešil javascriptem, který label přehodil do
prázdné buňky tabulky před checkbox. Teď se budu muset také zamyslet nad
lepším řešením.