AddCondition – vlastní validace
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MW
- Člen | 626
Zdravím a prosím o radu, co dělám blbě:
Mám form
protected function createComponentForm() {
...
$form->addSelect('it_locations_id', 'Umístění:', $this->getPresenter()->getLocationsForForm())->setPrompt('Zvolte')->setRequired('Zadejte umístění')->setOption('id', 'it_locations_id');
$form->addSelect('it_devices_types_id', 'Typ:', $this->getPresenter()->getDevicesTypesForForm())->setPrompt('Zvolte')->setRequired('Zadejte typ')
->addCondition($this->checkComponent, TRUE)->toggle('it_locations_id');
...
}
a validační funkci
function checkComponent($item, $arg) {
return TRUE;
}
Ať vracím ve validační funkci cokoliv, toogle nic neskryje ani
nezobrazi..
Dělám to špatně?
Díky!
- David Matějka
- Moderator | 6445
nette forms v zakladu „prepisuje“ validacni pravidla pro built-in validace (tzn equals, min…). u vlastnich validaci:
- pokud je to staticka funkce, tak napsat JS variantu dle https://doc.nette.org/cs/forms#…
- pokud je to metoda na objektu, tak to snadno nejde (nette je pri exportu do JS ignoruje)
- MW
- Člen | 626
No potřebuji si sahnout do DB a ověřit typ a na zakladě toho pole skryt/zobrazit..
Toto by mě mohlo asi vyřešit problém.. Je to ok? Tvaři se to fuknčně, jen jestli tam nemám nějakou zásadní botu :)
Ta funkce mě vrátí pole potřebných typu a já jen ověřuji IN a pokud se pole zobrazí, musí byt required.
$form->addSelect('it_devices_types_id', 'Typ:', $this->getPresenter()->getDevicesTypesForForm())->setPrompt('Zvolte')->setRequired('Zadejte typ')
->addCondition($form::IS_IN, $this->getComponentsTypes())->toggle('it_locations_id');
$form->addSelect('it_locations_id', 'Umístění:', $this->getPresenter()->getLocationsForForm())->setPrompt('Zvolte')->setOption('id', 'it_locations_id')
->addConditionOn($form['it_devices_types_id'],$form::IS_IN, $this->getComponentsTypes())->toggle('it_locations_id')
->setRequired('Zadejte umístění');