Recoverable Error?
- Fergi
- Člen | 14
Zdravim
jelikoz se v nette pohybuji pouze par dni tak narazim na chyby pro me
neresitelne :D
narazil jsem na problem zapisu dat do DB, vytvorim si komponentu … zavolam si
ji ale pri odeslani mi to hodi nasledujici chybu
*Recoverable Error
Argument 1 passed to ClankyPresenter::formularSubmitted() must be an instance of AppForm, instance of SubmitButton given*
cerpal jsem z akrabat.forms
<?php
protected function createComponentVloz($name)
{
$form = new appForm($this, $name);
$form->addText("pridal", "Zadejte jméno")
->addRule(FORM::FILLED, "Zadejte jméno");
$form->addText("datum", "Zadejte datum")
->addRule(FORM::FILLED, "Zadejte datum");
$form->addTextArea("text", "Obsah", "20", "10")
->addRule(FORM::FILLED, "Obsah nebyl vyplněn");
$form->addProtection();
$form->addSubmit("odeslat", "Odeslat")
->onClick[] = array($this, 'formularSubmitted');
}
?>
vykreslim
<?php
public function renderVloz()
{
$this->template->title = "Přidání článku";
$this->template->formular = $this->getComponent('vloz');
}
?>
a kdyz chci zapsat
<?php
public function formularSubmitted(AppForm $form)
{
if ($form['odeslat']->isSubmittedBy()) {
// zapis pomoci DIBI
}
$this->redirect('default');
}
?>
tak mi to hodi zminovanou chybu… kdyz AppForm z tama odstranim tak mi to
zase hodi chybu u isSubmittedBy.. nevim si rady… :((
poradi nekdo??
diky za vsechny odpovedi
Fergi
- David Grudl
- Nette Core | 8228
On je totiž rozdíl v tom, když nastavíš událost na tlačítko nebo na formulář:
$form->addSubmit("odeslat", "Odeslat")
->onClick[] = array($this, 'formularSubmitted');
// vs.
$form->onSubmit[] = array($this, 'formularSubmitted');
Zatímco v druhém případě se (jak očekáváš) metodě předá odeslaný formulář, v prvním případě se předá odeslané tlačítko. Takže metoda musí vypadat takto:
public function formularSubmitted(SubmitButton $button)
// nebo jednodušeji
public function formularSubmitted($button)
K formuláři se pak dostaneš takto:
public function formularSubmitted($button)
{
$form = $button->form;
}
- romansklenar
- Člen | 655
buď:
public function formularSubmitted(SubmitButton $button)
{
$form = $button->getForm();
...
}
nebo:
$form = new AppForm($this, $name);
...
$form->addSubmit("odeslat", "Odeslat");
$form->onSubmit[] = array($this, 'formularSubmitted');
EDIT: pozdě :)