Validace v zavislosti na jinem elementu
- hurvajs
- Člen | 86
Zkousel jsem nastavit validaci elementu, ktery je zavysly na jinem. Podle navodu na Zdrojaku to jde. Mam vsechny formulare udelane jako object rozsireny o Forms. Uvnitr objektu ale uz nevim, jak se k elementu, ktery urcuje podminku dostat.
Poradite mi?
<?php
final class Backend_UserProfileForm extends Form
{
public function __construct($name, $parent = null)
{
parent::__construct($name, $parent);
$this->addCheckbox('keepPassword', 'Ponechat heslo bez změny')
->setValue(true);
$this->addPassword('oldPassword', 'Původní heslo')
->addConditionOn($this->getComponent('keepPassword'), Form::EQUAL, true)
->addRule(Form::FILLED, 'Původní heslo musí být vyplněno.');
}
?>
- PetrP
- Člen | 587
Nerozumím kde přesně je problém, podle textu asi v
$this->getComponent('keepPassword')
což by mělo fungovat skus
ale zápis $this['keepPassword']
Jinak mimo tvuj problém: nebylo by lepší zrusit keepPassword a o tom jestli změnit/ponechat heslo, rozhodovat podle toho jestli je vyplněno
- hurvajs
- Člen | 86
To getComponent() jsem uz opravil (na zaklade jineho threadu). Nenapadlo me pouzit $this.
No ja bych chtel dosahnout toho, ze tam prave bude checkbox (defaultne
zaskrtnuty), a po jeho odstrtnuti se zobrazazi 3 skryte text inputy
* s puvodnim heslem,
* s novym heslem,
* a s overenim.
Jen nevim, jak pridat do renderedu ohraniceni DIVem potrebnych elementu, abych je mohl pres CSS schovat. Chtel bych prave vynutit aby clovek musel zadat puvodni heslo a nove.
I kdyz to co pises by urcite stacilo.
- PetrP
- Člen | 587
$this->addCheckbox('keepPassword', 'Ponechat heslo bez změny')
->setValue(true);
$this->addPassword('oldPassword', 'Původní heslo')
->addConditionOn($this->getComponent('keepPassword'), Form::EQUAL, true)
->addRule(Form::FILLED, 'Původní heslo musí být vyplněno.');
$this->addPassword('newPassword', 'Nové heslo')
->addConditionOn($form->getComponent('keepPassword'), Form::EQUAL, true)
->addRule(Form::FILLED, 'Nové heslo musí být vyplněno.');
$this['keepPassword']
->addCondition(Form::EQUAL, false)
->toggle('oldPassword')
->toggle('newPassword');
$this['oldPassword']
->setOption('id', 'oldPassword');
$this['newPassword']
->setOption('id', 'newPassword');