Nefunguje více tlačítek ve formuláři

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

Vytvořil jsem komponentu s jednoduchým formulářem, ve formuláři jsou tři odesílací tlačítka u klasického Buttonu nelze použít metodu onClick[] proto jsem použil tlačítka Submit. Pokud pracuji s komponentou formulář se odesílá a vše funguje, jakmile se vrátím na presenter kde je komponenta hlásí mi nette tuto chybu:
Argument 1 passed to Nette\Utils\Arrays::get() must be an array, null given, called in \!www\libs\Nette\Forms\Controls\BaseControl.php on line 344 and defined

pokud je ve formuláři pouze jedno odesílací tlačítko vše je OK
nevíte prosím kde může být chyba.

Komponenta:

<?php
use Nette\Application\UI\Control;
use Nette\Application\UI\Form;

class FiltrProduct extends Control {
    //put your code here

  /**
   * Vyrendrování komponenty
   */
  public function render() {

    // načtu soubor se šablonou
    $template = $this->template;
    $template->setFile(dirname(__FILE__) . '/FiltrProduct.latte');

    // a vykreslíme ji
    $template->render();
}


/**
 * Formulář komponenty filtru
 * @param type $name
 * @return \Nette\Application\UI\Form
 */
protected function createComponentSignInForm($name) {

    $form = new Form($this,$name);

    $form->addSubmit('galerie', '')
        ->setDefaultValue("galerie")
        ->setAttribute('class', 'galerieIco')
        ->setAttribute('title', 'Zobrazit jako galerii.')
        ->onClick[] = callback($this, 'processFilterGal');
    $form->addSubmit('sobrazky','')
        ->setAttribute('class', 'sObrazky sObrazkyUp')
        ->setAttribute('title', 'Zobrazit s obrázky.')
        ->onClick[] = callback($this, 'processFilterSobr');
    $form->addSubmit('cenik', '')
        ->setAttribute('class', 'cenik')
        ->setAttribute('title', 'Zobrazit jako cenník.')
        ->onClick[] = callback($this, 'processFilterList');

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

    if($form->isSubmitted()){dd("Formulář je odeslám!");}

    return $form;
}



/**
 * zpracování formuláře
 * @param UI\form $form
 */
public function processFilter($form){

    $values = $form->values;

    dd($values, "ddasfsaf");

}

}
?>

Presenter:

<?php
class ZboziPresenter extends BasePresenter {

   /**
    * Komponenta filtrování obsahu (akce, sklad, značka atd.)
    */
   protected function createComponentFiltrProduct($name){
        return new \FiltrProduct($this,$name);

    }
}
?>

Editoval ondra310 (18. 7. 2012 15:01)

vvoody
Člen | 910
+
0
-

To asi bude chciet klikatelnu ladenku.

ondra310
Člen | 25
+
0
-

Tak si odpovím sám :-)
Uvedené chování způsobuje metoda ->setDefaultValue("") na buttonu. Přitom pokud se nepletu, tak mít hodnotu na tlačítku není proti pravidlům html a myslím, že i podle API submitu to jde použít.
Nejhorší je asi ta chybová hláška, podle které jsem opravdu moc nepochopil v čem je problém.
Přiznávám se, že chyba vznikla spíše nedopatřením a psaním kódu stylem ctrl+c + ctrl+v :-) a default value jsem tam na nic neměl, ale dovedu si představit situaci, kdy by se mi mohla hodit.