Dodatečné odstranění políčka z formuláře
- Filip Procházka
- Moderator | 4668
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
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?
- Vyki
- Člen | 388
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)
- Filip Procházka
- Moderator | 4668
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