Více větví kontrol na pole ve formuláři
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Croc
- Člen | 270
Zdravím, mám takový dotaz, jestli je možné na formulářovém prvku realizovat 2 nezávislé větve kontrol. Příklad:
$form->addText('last_name', 'Přijmení:')
// 1) Pokud bude hodnota jiného pole větší než 1, příjmení bude povinné.
->addConditionOn($form['jine_pole'], Form::RANGE, array(1, null))
->setRequired('Příjmení musí být vyplněno.')
// 2) Vždy potřebuji kontrolvat validitu znaků v daných polích:
->addCondition(Form::FILLED)
->addRule(Form::MIN_LENGTH, 'Příjmení musí mít alespoň %d znaky', 2)
->addRule(Form::MAX_LENGTH, 'Příjmení nemůže mít více jak %d znaků', 20)
->addRule(Form::PATTERN, 'Obsahuje nepovolené znaky.', '[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ]+[ \-]?');
Je tedy možné definovat tyto 2 kontroly pro 1 prvek? Nebo musím použít Vlastní validační funkci nad celým formulářem?
- Šaman
- Člen | 2668
Aha, to jsem taky neznal. Ale šlo udělat:
<?php
$lastNameInput = $form->addText('last_name', 'Přijmení:');
// 1) Pokud bude hodnota jiného pole větší než 1, příjmení bude povinné.
$lastNameInput->addConditionOn($form['jine_pole'], Form::RANGE, array(1, null))
->setRequired('Příjmení musí být vyplněno.');
// 2) Vždy potřebuji kontrolvat validitu znaků v daných polích:
$lastNameInput->addCondition(Form::FILLED)
->addRule(Form::MIN_LENGTH, 'Příjmení musí mít alespoň %d znaky', 2)
->addRule(Form::MAX_LENGTH, 'Příjmení nemůže mít více jak %d znaků', 20)
->addRule(Form::PATTERN, 'Obsahuje nepovolené znaky.', '[a-zA-ZáčďéěíňóřšťůúýžÁČĎÉĚÍŇÓŘŠŤŮÚÝŽ]+[ \-]?');
?>