Formuláře – automaticky se vkládá text do class

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

Dobrý den, mám tento formulář:

$form = new Nette\Application\UI\Form();
		$form->addText('email')
			->setRequired('Nezadal jsi email.')
                        ->setAttribute("class", "inputwrapper animate1")
                        ->setAttribute("placeholder", "Zadej email");

		$form->addPassword('password')
			->setRequired('Nezadal jsi heslo.')
                        ->setAttribute("class", "inputwrapper animate2")
                        ->setAttribute("placeholder", "Zadej heslo");

		$form->addSubmit('send', 'Přihlásit se')->setAttribute("class", "inputwrapper animate3");

		// call method signInFormSucceeded() on success
		$form->onSuccess[] = $this->signInFormSucceeded;
		return $form;

Problém je s tím setAttribute(„class“, …) protože vygeneruje class=„inputwrapper animate1 text“ nebo class=„inputwrapper animate3 button“ podle toho v jakým elementu ho použiju. jak zabránit tomu aby mi tam přidával to text a button? díky

David Matějka
Moderator | 6445
+
+2
-

Dela to default form renderer, viz https://api.nette.org/…rer.php.html#…, takze to vypnes asi takhle:

$form->renderer->wrappers['control']['.text'] = '';

Editoval matej21 (10. 6. 2014 17:13)

bluray
Člen | 178
+
0
-

Můžu to nějak nastavit pro celý form? tohle je jenom pro pole text. když mám password, musel bych to nastavit i pro něj, to samý pro submit…

David Matějka
Moderator | 6445
+
0
-

Budes muset smazat tu class pro jednotlivy typy (viz ten kod). Nejlepsi bude, kdyz si ten renderer podedis (pripadne si udelas tovarnicku, ktera ho nakonfiguruje) a pro formular jen nastavis ten tvuj renderer

Aurielle
Člen | 1281
+
0
-

Podědění rendereru je asi nejlepší řešení, nebudeš to muset nastavovat pro každý formulář zvlášť.