Jak přidat do formuláře <button>
- Šaman
- Člen | 2664
Mozna proto, ze na w3schools.com pisou:
„Important: If you use the button element in an HTML form, different browsers will submit different values. Internet Explorer will submit the text between the <button> and </button> tags, while other browsers will submit the content of the value attribute. Use the input element to create buttons in an HTML form.“
Takze input je cistejsi a spolehlivejsi, o coz v Nette jde. Ale myslim, ze jde predefinovat, co vlozi metoda addButton() do formulare pomoci
<?php
$form['controlName']->getControlPrototype();
//Nette\Web\Html objekt, na něm můžeš dělat, co chceš
?>
- ZETCHA
- Člen | 59
Šaman napsal(a):
Mozna proto, ze na w3schools.com pisou:
„Important: If you use the button element in an HTML form, different browsers will submit different values. Internet Explorer will submit the text between the <button> and </button> tags, while other browsers will submit the content of the value attribute. Use the input element to create buttons in an HTML form.“
Takze input je cistejsi a spolehlivejsi, o coz v Nette jde. Ale myslim, ze jde predefinovat, co vlozi metoda addButton() do formulare pomoci
<?php $form['controlName']->getControlPrototype(); //Nette\Web\Html objekt, na něm můžeš dělat, co chceš ?>
Ty i w3schools.com máte samozrejmě pravdu.
Pokud však <button> chceš použít jen jako submit tlačítko,
které ti dovoluje díky vložení čehokoliv mezi <button>
…</button>
ovládat lépe vzhled tohoto tlačítka a nezáleží ti co se
v souvislosti
s tímto tl. odešle, pak to chybí.
- ZETCHA
- Člen | 59
Šaman napsal(a):
<?php $form['controlName']->getControlPrototype(); //Nette\Web\Html objekt, na něm můžeš dělat, co chceš ?>
Můžu ještě poprosit? Jak z jednoho prvku (input) udělám druhý
(button).
Hrabal jsem se v tom nápadu od Šamana a narazil jsem na jak vidno základní
neznalost //Nette\Web\Html.
- Šaman
- Člen | 2664
To jsem sorry, ale jsem holt Nette Lamma.
Ten getControlPrototype() mi doporucil Ondra Mirtes, ale nakonec jsem ho nemusel pouzit (vystacil jsem si se sablonou). V dokumentaci pisou: „Returns control's HTML element template.“
Myslel jsem ze to bude fungovat takhle, ale zkousel jsem to ted, a vypada to ze tudy cesta nevede:
<?php
$form->addButton('btn1','Click me!');
$btn1 = $form['btn1']->getControlPrototype(); // htmlObject controlu
$btn1->setHtml("<button>..</button>");
?>
Jinak tady najdes priklad, jak jsem si uplne rucne prepsal sablonu formulare, ale Nette Guru mi toto reseni jednomyslne zavrhli. Jine reseni tveho problemu bohuzel nevim.
--- edit ---
pomoci
<?php
$btn1->setName("button");
?>
zmenis tag z inputu na button. Bohuzel to jen prepise nazev tagu, takze se
to vyrenderuje takto
<button type="button" name="btn1" id="frm-btn1" value="Click me!"></button>
Budes muset pockat na nekoho kdo tomu rozumi.. :|
Editoval Šaman (17. 3. 2010 15:56)
- ZETCHA
- Člen | 59
honzakuchar napsal(a):
Není špatné (spíš velmi dobré – díky za to!), mezitím jsem přišel na ruční zpracování:
<?php
$form->addButton('tlacitko', NULL); //<----- lze standardně nastavit value
$pretyp = $form['tlacitko']->getControlPrototype();
$pretyp->setName("button"); // změna prvku na button
$pretyp->type = 'submit'; // nastavení typu buttonu
// následuje vytvoření obsahu mezi <button>...</button>
$pretyp->create('span class="styl1"')
->add(Html::el()
->create('span')
->add(Html::el()
->create('span', 'Text buttonu')));
// s tímto si můžete hrát do nekonečna
?>