někdo testuje action která nesouvisí s odeslaným formem, ale přesto simuluje odeslání formu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mcmatak
Člen | 487
+
0
-

mám několik views a actions v presenteru, presenter má form a samozřejmě handler formu,

pokud někdo přijde na view např. Default tak uz v actionDefault ja checknu jeslti je registrovany, pokud ano tak ma smysl vygenerovat form a nebo ho zpracovat

pokud neni hodim flashmessage a reknu tento form nemůže být zpracován dokud se nepřihlásíš

nj ale nevím jak to někoho napadlo ale dost často zkouší adresu actionDefault2 kde uz tu kontrolu na registrovaneho uzivatele nemam, a hlavne pro tento krok nema smysl, no a na teto adrese si zadava submit formu, takze se generuje form, ktery ale vygenerovat nejde, no a otazka vubec je jak to dat uzivateli vedet protoze na nejake tvoreni flashmessage je pozde, a hlavne vubec nevim jak se tam nekdo dostava ale je to caste, podle mne nekdo si vzal odkaz kdyz odeslal ten form a dal nekam url a jak tam nekdo klika tak odesila form ale mozna se pletu j anevim

Melmen
Člen | 132
+
0
-

Já to řeším stejně jako ty, akorát že ověřuju uživatele i po odeslání formu. Tj něco jako:

Form:

$form = new \Nette\Application\UI\Form;

blablabla...

$form->onSuccess[] = callback($this, 'formsubmitted');

A zpracování formu:

public function formsubmitted($form)
{
if( !$this->getUser()->isLoggedIn ){
$this->flashMessage('Tady nemáš co dělat!', 'error');
$this->redirect(':Front:Homepage:default');
}
//Tady zpracuju formulář
}

Píšu to z hlavy, snad je to dobře :)

Filip Procházka
Moderator | 4668
+
0
-

Prohlédni si první příklad zde, je to best practise pro tvůj případ.

Editoval HosipLan (9. 2. 2012 15:44)

mcmatak
Člen | 487
+
0
-

No dobře já to muzu kontrolovat i v handleru ale jak říct uživateli ze je něco špatně, tady uz ho těžko informujes ne? To mu proste schodiště badreqexception?

Melmen
Člen | 132
+
0
-

Jak těžko infomuješ? Tys nečetl co sem poslal?
Ať si to zkouší kde chce, od toho je tam přece ona podmínka

if( !$this->getUser()->isLoggedIn ){
$this->flashMessage('Tady nemáš co dělat!', 'error');
$this->redirect(':Front:Homepage:default');
}