Odeslání formuláře bez reakce
- Zechy
- Člen | 24
Zdravím,
Už si nevím rady čím to je, ale nejde mi odeslat formulář, ani se neprovede validace. Prohledal jsem zde známá témata ale nic z toho mi nepomohlo.
Prsenter
protected function createComponentNewPageForm()
{
$form = new Nette\Forms\Form;
$form->addtext('name')
->setRequired('Zadejte jméno stránky')
->setAttribute('class', 'art')
->setAttribute('autofocus')
->setAttribute('placeholder', 'Název stránky')
->setRequired();
$form->addTextArea('context')
->setAttribute('class', 'art txtar')
->setAttribute('id', 'editor')
->setAttribute('placeholder', 'Text stránky...')
->setRequired();
$form->addSelect('template', '', $this->database->table('pages_template')->order('name ASC')->fetchPairs('id', 'name'))
->setPrompt('Vyberte šablonu')
->setAttribute('class', 'fka')
->setRequired();
$form->addCheckbox('hide', 'Veřejná stránka')
->setAttribute('class', 'fka')
->setRequired();
$form->addSubmit('send', 'Odeslat')
->setAttribute('class', 'button');
$form->onSuccess[] = $this->processNewPageForm;
return $form;
}
/**
* @param \Nette\Application\UI\Form
*/
public function processNewPageForm($form)
{
$values = $form->getValues();
$pageId = $this->getParameter('pageId');
if ($pageId) {
$page = $this->database->table('pages')->get($pageId);
$page->update($values);
$this->flashMessage('Stránka byla upravena');
} else {
$page = $this->database->table('pages')->insert($values);
$this->flashMessage('Stránka byla přidána', 'success');
}
$this->redirect('Pages:default');
}
Vykreslení formuláře
{form newPageForm}
<fieldset class="leftside">
{input name}
{input context}
</fieldset>
<fieldset class="RightSide">
<div class="RightSideHead">
<i class="fa fa-flag-o"></i>
<span>Vlastnosti stránky</span>
</div>
<div class="chkbx">
{label hide/}
{input hide}
{input template}
</div>
{input send}
</fieldset>
{/form}
Budu rád za každou radu, děkuji.
- JakubJarabica
- Gold Partner | 184
Vymeň
<?php
$form = new Nette\Forms\Form;
?>
za triedu, ktorá vie spracovávať signály:
<?php
$form = new Nette\Application\UI\Form;
?>
… a pôjde ti to.
- Tomáš Votruba
- Moderator | 1114
Také pomůže přidat callback pro onError
, přípdaně
použít $form->getErrors().
$form->onSuccess[] = $this->processNewPageForm;
$form->onError[] = $this->newPageFormFailed;
public function newPageFormFailed($form)
{
dump($form->getErrors());
}
Editoval Tomáš Votruba (27. 4. 2014 20:02)
- n.u.r.v.
- Člen | 485
v těhle případech mi pomohlo si formulář nejprve zjednodušit na úplné minimum – nech jen jeden textový input a bez pravidel – aby si zkusil a v metodě pro zpracování formuláře si udělej jen výpis toho inputu (nap. do flashmessage)…
Tím zjistíš zda se vůbec formulář zpracovává…pak postupně přidávej pravidla a další prvky formuláře…Tak zjistíš, kde se to kousne…
- mdjimy
- Člen | 9
Tak co podařilo se ti dohledat chybu?
Zkoušel jsem tvůj kód u tím, že jsem použil UI Form a funguje mi bez problémů.
Pokud jsem to správně pochopil, tak ti ani nefunguje validace & odesílání na client-side…
Být tebou tak bych hledal odpověď v konzoli… zkus se kouknout, jestli ti to na něčem nepadá…
Z vlastní zkušenosti pak ještě doporučuji promazat temp složku. ;)