Dodatečné odstranění políčka z formuláře

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

Dá se dodatečně odstranit prvek formuláře?
Jakože z už nadefinovaného formuláře odstranit první textové políčko?

Mám generátor formulářů, který mám zavedený v celé aplikaci, takže do něj nechci hrabat.

Kdyby někdo věděl jak na to, tak by to bylo super.

JPalounek
Člen | 19
+
0
-

Nebo, eventuelně dodatečně předefinovat.

norbe
Backer | 405
+
0
-

Jednoduše pomocí unset($form["item_name"])

Filip Procházka
Moderator | 4668
+
0
-

to není spolehlivé, je tam nějaký problém se skupinami FormGroup. Lepší je formulář vytvořit tak, aby se z něm nemusely komponenty odebírat

Editoval HosipLan (15. 1. 2011 13:01)

JPalounek
Člen | 19
+
0
-

Ano, avšak já mám funkční generátor formulářů, ale v tomhle případě potřebuju formulář co mi hodí předělat, ale je to jenom v tomhle případě a v 50 nebo 60 dalších potřebuju ten co hází.

A nechce se mi ho dělat ručně, protože kdybych pak potřeboval změnit databázi musel bych předělat celý formulář (je pěkně velký).

Co je vůbec proměnná do které formulář uložím zač? Je to array prvků formuláře nebo string nebo co to je?

jasir
Člen | 746
+
+1
-

objekt voe ;-)

Vyki
Člen | 388
+
0
-

Asi bys měl začít zde https://doc.nette.org/…n/components. AppForm je obecně container a jednotlivé prvky (button, text, radio…) jsou komponenty, jejichž je container rodičem – jsou to tedy objekty. Container má komponenty uloženy v $components. Základem jsou potom metody pro operace nad množinou těchto komponent, které jsou v containeru umístěny (přidání, odebrání…).

Editoval Vyki (15. 1. 2011 15:24)

JPalounek
Člen | 19
+
0
-

Ok, díky za informace budu se v tom chvíli hrabat.

Filip Procházka
Moderator | 4668
+
0
-

Rozděl si formulář do komponent a napiš si builder

forms
|- FormBuilderFactory
|+ Builders
||- ContactFormBuilder (poskládá Contact, ..)
||- RegistrationFormBuilder (poskládá Creditians a řekne mu ať přidá 2x heslo, Address, ..)
||- LoginFormBuilder (poskládá Creditians a nechá jenom 1x heslo, ...)
|+-Containers
||- CreditiansContainer
||- ContactContainer
||- AddressContainer
||- ...
protected function createComponentRegistrationForm($name)
{
	$builderFactory = $this->getApplication()->getService('FormBuilderFactory');
	$builder = $builderFactory->getBuilder($name);
	$form = $builder->createForm($this, $name);

	// ...
	$mapper = $builderFactory->getMapper($name);
	$form = $mapper->toForm($data, $form);

	// ...
	return $form;
}

ideální je si k téhle struktuře udělat i Mappery atd

každopádně to budeš muset přepsat, ale tohle se bude líp refaktorovat v budoucnu :P