Atributy elementu FORM

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

Chtěl bych se zeptat zdali je nějaká možnost nastavit html atributy (zejména id a class) tagu Form, vykreslovaného přes metodu renderBegin ConventionalRendereru. Předem upozorňuji, že jsem těžký začátečník, kvůli tomuto čerstvě registrovaný. :)

Po několika hodinách studování formulářů Nette a snaze přiblížit se své původní html šabloně je to poslední co mi zbývá ke spokojenosti. Formulář vytvářím továrničkou createComponent[jmeno] a vykresluji manuálně.

<?php
        {!$form->render('begin')}
        {!$form->render('errors')}
        {!$form['text']->label}
        {!$form['text']->control}
        {!$form['ok']->label}
        {!$form['ok']->control}
        {!$form->render('end')}
?>

Tedy otázka zní, je nějaký způsob jak formu jako takovému id a class nastavit? Příjde mi to jako validní požadavek, stejně jako dát tyto atributy samotným formulářovým prvkům.

Hledám něco jako:

<?php
	$form->setId('idcko');
	$form->setClass('trida');
?>

Praktický dopad je tedy jen ten, že to nebudu muset obalovat do dalšího elementu, kvůli css selektoru.

Předem díky za odpověď.

i.magine
Člen | 81
+
0
-

Dělá se to přes getElementPrototype :

$form->getElementPrototype()->id="muj_form";
Aurielle
Člen | 1281
+
0
-

Ještě tě opravím, je to takto:

$form->getElementPrototype()->id('idecko')->class('trida');
Eskel
Člen | 5
+
0
-

Skvělé, obdivuhodná rychlost. :) Díky moc za odpovědi, přesně to jsem potřeboval.
Myslel jsem že to funguje jen na vnořené elementy. Ještě jednou díky.

Cifro
Člen | 245
+
0
-

Z jabberu: [20:10:39] <iguana007> a jak resite name atribut u formularu? podle validatoru by tam nemel co delat

A už podľa špecifikácie pre HTML4 je to „deprecated“:

name = cdata [CI]
This attribute names the element so that it may be referred to
from style sheets or scripts. Note. This attribute has been included
for backwards compatibility. Applications should use the id attribute to identify elements.

Prihovoril by som sa, za to že namiesto name aby Nette generovalo id.

<form name="frm-....">
<form id="frm-....">

Editoval Cifro (15. 1. 2010 2:25)

despiq
Člen | 320
+
0
-
<?php
$form->getElementPrototype()

$form['input']->getControlPrototype()
?>