Jak přidat do formuláře <button>

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ZETCHA
Člen | 59
+
0
-

Zdravím.
Potřeboval bych poradit.

Jak do formuláře přidám prvek <button></button>?
Nedaří se mi to nikde najít! :-(

Díky za radu!

jasir
Člen | 746
+
0
-

$form->addButton('btn1','Click me!');

ZETCHA
Člen | 59
+
0
-

tohle vygeneruje <input type=„button“ name="" id="" value="" />
já bych rád <button></button>, pokud možno i se všemi vymoženostmi které jdou s tímto tágem dělat

pekelnik
Člen | 462
+
0
-

Absence buttonu v Nette mi taky vadí…

Šaman
Člen | 2666
+
0
-

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
+
0
-

Š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
+
0
-

Š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 | 2666
+
0
-

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)

iguana007
Člen | 970
+
0
-

honzakuchar napsal(a):

https://componette.org/search/?…

nice :) Díky Honzo

ZETCHA
Člen | 59
+
0
-

honzakuchar napsal(a):

https://componette.org/search/?…

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
?>