AppForm($this, $name) vs AppForm()
- toka
- Člen | 253
Pokud dobře čtu, a hlavně chápu, tak je nejlepší vytvářet formuláře následovně:
public function createComponentFormLogin($name) {
$form = new AppForm($this, $name);
...
return $form;
}
A ne pouze:
public function createComponentFormLogin() {
$form = new AppForm();
...
return $form;
}
Proč ale platí následující?
// Toto funguje v pořádku a dle očekávání
public function createComponentFormLogin() {
$form = new AppForm();
$form->setMethod('get');
$form->setAction('http://www.example.com/doAnything.php');
...
return $form;
}
// Toto nefunguje
public function createComponentFormLogin($name) {
$form = new AppForm($this, $name);
$form->setMethod('get'); // Zde je chyba - Form::setMethod() must be called until the form is empty
$form->setAction('http://www.example.com/doAnything.php');
...
return $form;
}
Jak použít setMethod()
v druhém případě? Nebo pokud chci
použít setMethod()
, musím použít první variantu, jak píše
Ondřej Mirtes v tomto
příspěvku? Nebo jsem, což u mne není neobvyklé, něco špatně
pochopil? Děkuji za info.
- westrem
- Člen | 398
Ak sa nemylim tak pri pouziti:
$form = new AppForm($this, $name);
sa formular hned attachne na presenter a teda sa aj naplni datami.
Napada ma pouzit nasledovnu konstrukciu:
$form = new AppForm();
$form->setMethod(Form::GET); // podla mna je lepsie pouzit na to urcenu konstantu ako tam natvrdo pchat string
$this->addComponent($form, $name); // ak chces aj $name, moze byt NULL
// Toto funguje v pořádku a dle očekávání
Si si isty, ze to funguje? Podla mna sa ti tam ten action
uz
nenastavi, zase raz ide o to, ze pri attachnuti sa natvrdo nastavuje
action.
Editoval westrem (16. 9. 2010 18:10)
- Ondřej Mirtes
- Člen | 1536
Já si stojím za createComponentName()
a
new AppForm;
, protože je to nejméně WTF a vypadá to
elegantně.
A v těch 5% případů, kdy potřebuji nastavit jinou action a method (snad jen u vyhledávacího formuláře a při odesílání na API cizí služby), holt ten formulář připojím pomocí konstruktoru.
- Patrik Votoček
- Člen | 2221
Já si stojím za createComponentName($name)
a
new AppForm($this, $name);
, protože je to nejméně WTF a vypadá
to elegantně.
Protože pak se z 5% případů stává 0.5% případů… Navíc se nejedná jen o nastavení akce ale jak už jsem napsal jinde tak třeba o problémy u dynamických formulářů apod.
Edit: abych jenom neplácal tak řešení problému:
public function createComponentFormLogin() {
$form = new AppForm;
$form->setMethod('get');
$form->setParent($this);
$form->setAction('http://www.example.com/doAnything.php');
...
return $form;
}
- Patrik Votoček
- Člen | 2221
mám takový pocit že jsem ti to už psal. Ale necituj prosím zbytečně celý předchozí post nemá to smysl a za*** to forum. (citaci jsem odstranil)