Nezpracuje se formulář po odeslání
- Vanamas
- Člen | 20
Zdravím,
nějak nemohu přijít na to, proč se mi nezpracuje formulář. Jedná se
o globální chat, proto je formulář v BasePresenteru. Jde o to, že se
formulář odešle, ale metoda chatFormSubmitted vůbec nezavolá.
public function chatFormSubmitted(Form $form) {
$values = $form->getValues();
print_r($values);
exit;
$user = $this->getUser();
try {
$this->chatRepository->insert(array('text' => $values->message,
'time' => time(),
'user_id' => $user->id,
'name' => $user->username));
$this->flashMessage('Zpráva odeslána', 'success');
$this->redirect('this');
} catch (NAuthenticationException $e) {
$form->addError('Chyba');
}
}
protected function createComponentChatForm() {
$form = new NForm();
//$form->setMethod('GET');
$form->addText('message', '', 20)
->addRule(NForm::FILLED, 'Nelze odeslat prázdnou zprávu.');
$form->addSubmit('sendmessage', '');
$form->onSuccess[] = $this->chatFormSubmitted;
return $form;
}
V @layout.latte mám
{snippet}
{form chatForm}
<div class="chat-form">
{control $form errors}
{input message} {input sendmessage}<div class="hidden"></div>
</div>
{/form}
{/snippet}
Nette 2.0.7. pro PHP 5.2. PHP na localu mám asi 5.3.
Vytvářím stránky pro hosting z PHP 5.2.
Co dělám špatně? Díky za odpověď
- Vanamas
- Člen | 20
Teď si nejsem jist co máte na mysli. Tohle?
<form action="" method="post" novalidate=""> <div class="chat-form">
<input type="text" size="20" class="text" name="message" id="frmchatForm-message" required="required" data-nette-rules="{op:':filled',msg:"Nelze odeslat pr\u00e1zdnou zpr\u00e1vu."}" value="dhgd"> <input type="submit" class="button" name="sendmessage" id="frmchatForm-sendmessage" value="Odeslat">
</div>
<div><!--[if IE]><input type=IEbug disabled style="display:none"><![endif]--></div>
</form>
- Badaboom
- Člen | 33
Aha, ekvivalent třídy Nette\Application\UI\Form pro 5.2 je třída Nette\Application\UI\AppForm, takže:
$form = new NAppForm();
- ViPEr*CZ*
- Člen | 817
Vanamas napsal(a):
Děkuji, už se to posílá. Musím ale pořešit další chyby. S tím si ale nějak poradím, snad. Potom musím ještě nahodit ajax pro odesílání, tak snad se u toho nezaseknu.
btw myslel jsem, že ke všemu stačí přiřadit prefix N.
No většinou by mělo, ale Nette má dvě třídy Form pro PHP 5.3, ale každou v jiným namespace a v 5.2 namespace není, tak to je takto rozlišený.