Zpracování formuláře podmínka IF
- wicked
- Člen | 290
Zdravím přátelé,
mám takový problém, ale nevím jak přes něj dál …
Mám jednoduchý formulář:
public function createComponentKontaktForm() {
$form = new Form();
$form->addText('jmeno', 'Jméno a přijmení')
->setAttribute('placeholder', 'Jméno a přijmení .....')
->setRequired('Pole je povinné!')
->setAttribute('class', 'form-control');
$form->addText('pozice', 'Pozice')
->setAttribute('placeholder', 'Pozice .....')
->setAttribute('class', 'form-control');
$form->addText('email', 'Email')
->setAttribute('placeholder', 'Email .....')
->setAttribute('class', 'form-control');
$form->addText('tel', 'Telefon')
->setAttribute('placeholder', 'Telefon .....')
->setAttribute('class', 'form-control');
$form->addUpload('img', 'Obrázek')
->addRule(Form::IMAGE, 'Soubor musí být obrázek - .jpg, .gif, .png')
->addRule(Form::MAX_FILE_SIZE, 'Soubor je příliš velký! Povolená velikost je 2M.', 2 * 1024 * 1024);
$form->addSubmit('save', 'Vytvořit kontakt')
->getControlPrototype()
->class('btn btn-block btn-info');
// Zavola metodu kontaktFormSucceeded() na zpracovani formulare
$form->onSuccess[] = $this->kontaktFormSucceeded;
$form->setRenderer(new BootstrapRenderer);
return $form;
}
Zde je vše snad jasné ..
a zpracování formuláře:
public function kontaktFormSucceeded($form) {
$values = $form->getValues();
if($values->img->getName()) {
dump($values);
} else {
dump($values);
}
}
Problém mám ovšem v tom, že když není img vyplněno, tak to prostě nic neudělá …
Respektivě, když vyberu soubor, zobrazí to dump, if se chová tak jak má, ale jakmile soubour nevyberu, provede se if, ale uz ne else … nic se nevypise …
Nenapadá Vás něco? Snad hodinu se snazim …
Nette 2.1.4
Děkuji
- Michal Vyšinský
- Člen | 608
IMO když nevybereš soubor, tak ti neprojdou validační pravidla. Zkus dát před pravidla toho img inputu ještě
->addCondition(Form::FILLED)
- Michal Vyšinský
- Člen | 608
Z čeho? Jestli potřebuješ něco vysvětlit je tu dokumentace a nebo se zeptej tady.
- Šaman
- Člen | 2668
AddRule()
přidává validační pravidlo. Před něj se může
napsat podmínka addCondition()
a to pravidlo se pak použije jen
pokud je podmínka splněná.
Příklad z dokumentace:
<?php
$form->addPassword('password', 'Heslo:')
// pokud je heslo krátké
->addCondition(Form::MAX_LENGTH, 5)
// pak bude muset obsahovat číslici
->addRule(Form::PATTERN, 'Musí obsahovat číslici', '.*[0-9].*');
?>
Editoval Šaman (10. 7. 2014 22:12)