Jak řešit potvrzení na základě vyplněných údajů
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- BigCharlie
- Člen | 283
Mám formulář. Uživatel ho vyplní, jedno z polí je e-mail. Po odeslání zkontroluji, zda se k e-mailu nevážou nějaké související záznamy. Pokud ano, potřebuji záznamy zobrazit, aby uživatel druhým odesláním téhož formuláře potvrdil výsledek.
Pokud se k emailu nevážou záznamy (tj. i pokud se rozhodne e-mail dodatečně změnit), formulář se zpracuje rovnou.
Jak nejlépe na to? Nyní to řeším takto:
<?php
class myPresenter {
...
function processMyForm(Form $form) {
...
if (!$this->session->getSection('myForm')->verifyEmail && $this->getRecords(values['email'])) {
$this->flashMessage('Existují záznamy', 'warning');
$this->redirect('this', array('verifyEmail' => $values['email']));
} else {
unset($this->session->getSection('myForm')->verifyEmail); // Toto je možná zbytečné
...
}
}
function actionAddForm($id) {
...
if (($email = $this->getParameter('verifyEmail'))) {
$this->session->getSection('myForm')->verifyEmail = TRUE;
$this->template->records = $this->getRecords($email);
}
...
}
function renderAddForm($id) {
if ($this->getParameter('verifyEmail')) {
unset($this->session->getSection('myForm')->verifyEmail);
}
}
}
?>
Nepřipadá mi to úplně elegantní. Napadá někoho lepší způsob?
Jen dodávám, že uživatel samozřejmě z formuláře může kamkoliv odejít, otevřít tentýž formulář s jiným záznamem, …