form – metoda na odobratie prvku
- bazo
- Člen | 620
Do Forms by sa hodila moznost odobrat konkretny prvok. Priklad:
Form na pridanie noveho zamestnanca obsahuje policko ‚password‘.
Form na editaciu dedi od formu na pridanie. Nechcem, aby sa dalo menit heslo. Pouzitie unset($form[‚password‘]); zahlasi Component ‚password‘ is not attached to ‚Form‘.
Jedina moznost je prvku nastavit disabled a rendered, co je dost neprakticke.
- bazo
- Člen | 620
<?php
class FormNew extends BaseForm
{
public function __construct(IComponentContainer $parent = null, $name = null)
{
parent::__construct($parent, $name);
$this->addGroup('Group');
$this->AddText('policko');
}
}
class FormEdit extends FormNew
{
public function __construct(IComponentContainer $parent = null, $name = null)
{
parent::__construct($parent, $name);
unset($this['policko]); // hodi error
}
}
?>
- Oggy
- Člen | 306
bazo napsal(a):
aha, problem je v tom, ze ten prvok patri do skupiny. vtedy nejde odobrat. ak ho dam mimo skupiny tak ide. takze bud je to bug alebo to treba robit nejak inak
co použít metodu removeComponent?
<?php
$form = $this->getComponent('editForm');
$form->removeComponent($form['password']);
?>
pokud to je group
<?php
$group = $form->getComponent('groupName');
$group->removeComponent($group);
?>
nebo mě napadá
<?php
$form->removeComponent($form['groupName']['password']);
?>
ale střílím tak od boku..nechce se mi to testovat..ale třeba to takto půjde
Editoval Oggy (21. 6. 2010 20:21)
- bazo
- Člen | 620
Oggy napsal(a):
bazo napsal(a):
aha, problem je v tom, ze ten prvok patri do skupiny. vtedy nejde odobrat. ak ho dam mimo skupiny tak ide. takze bud je to bug alebo to treba robit nejak inak
co použít metodu removeComponent?
<?php $form = $this->getComponent('editForm'); $form->removeComponent($form['password']); ?>
pokud to je group
<?php $group = $form->getComponent('groupName'); $group->removeComponent($group); ?>
nebo mě napadá
<?php $form->removeComponent($form['groupName']['password']); ?>
ale střílím tak od boku..nechce se mi to testovat..ale třeba to takto půjde
nic z toho nefunguje. ani taketo nieco:
<?php
$this->removeComponent($this->getComponent('policko'));
?>
stale error Component ‚policko‘ is not attached to ‚Form‘.
- Oggy
- Člen | 306
stale error Component ‚policko‘ is not attached to ‚Form‘.
no tahle chyba se objevuje pokud v továrničce (createComponent) form
zapomeneš vrátit..
ale ty to řeší vlastní třídou pro každou komponentu ..proč vlastně?
když můžeš udělat toto:
<?php
public function createComponentForm() {
$form = new AppForm;
...
return $form;
}
public function createComponentEditForm() {
....
$form = $this->createComponentForm();
....
$form->removeComponent($form['sendNext']);
$form->onSubmit = array();
$form->onSubmit[] = array($this, 'editFormSubmit');
return $form;
}
?>
ale v tvém případě takhle bez kódu nevím..
jinak
<?php
$this->addGroup('Group');
$this->AddText('policko');
?>
nepřídá políčko skupiny Group ..přidáváš políčko do $this ..