Ignorace validationScope bez použití redirectu
- Foowie
- Člen | 269
2.0-beta ze dne 28. 05. 2011
Je žádané chování, aby takto vytvořený formulář hlásil chybu, pokud se
nevyplní nic do kolonky „text“?
public function createComponentForm($name) {
$form = new Form($this, $name);
$form->addText("text", "Text")->addRule(Form::FILLED, "Filled !");
$form->addSubmit("submitButton", "Submit !")->setValidationScope(false);
return $form;
}
Edit: chybou bylo myšleno, že se na stránce vypíše „Filled !“ ve form-errors, ikdyž javascript alert nehlásí.
Editoval Foowie (12. 6. 2011 13:08)
- Filip Procházka
- Moderator | 4668
Ano,
je ovšem žádané aby se zavolal callback
$form->addSubmit("submitButton", "Submit !")
->setValidationScope(FALSE) // klidně i nevalidní, ale pouze toto tlačítko
->onClick[] = callback($this, ...);
onSubmit
ani nově onSuccess
by se ale při chybě
volat neměl.
PS: pozor, takovému callbacku se nepředává Nette\Forms\Form ale Nette\Forms\Controls\SubmitButton.
Taky vám nefunguje na fóru [api:třída]
? …
Ha, funguje [[api:trida]]
:)
Editoval HosipLan (13. 6. 2011 13:27)
- David Grudl
- Nette Core | 8218
Podle mého by button měl mít taky nějaké onSuccess, jen si nejsem jistý tímto názvem.
Na fóru je třeba závorky zdvojit, s jednoduchýma bylo moc problémů.
- 22
- Člen | 1478
je to polámané, ani Hosiplanův
postup na to nezabere, navíc jen tam i špatný config.neon:
správně:
#
# SECURITY WARNING: it is CRITICAL that this file & directory are NOT accessible directly via a web browser!
# https://nette.org/en/security-warning
#
common:
php:
date.timezone: Europe/Prague
services:
robotLoader:
run: true
database:
class: Nette\Database\Connection
arguments: ['sqlite2:%appDir%/models/demo.db']
model:
class: Model
arguments: ['@database']
authenticator:
factory: ['@model', 'createAuthenticatorService']
production < common:
development < common:
Editoval 22 (29. 6. 2011 20:18)
- 22
- Člen | 1478
… funguje to jedíně takto:
protected function createComponentAlbumForm()
{
$form = new Form;
$form->addText('artist', 'Artist:')
->setRequired('Please enter an artist.');
$form->addText('title', 'Title:')
->setRequired('Please enter a title.');
$form->addSubmit('save', 'Save')->setAttribute('class', 'default');
$form->addSubmit('cancel', 'Cancel')
->setValidationScope(FALSE)
->onClick[] = callback($this, 'aa');
$form->onSuccess[] = callback($this, 'albumFormSubmitted');
$form->addProtection('Please submit this form again (security token has expired).');
return $form;
}
public function aa()
{
$this->redirect('Dashboard:');
}
Editoval 22 (1. 7. 2011 12:21)