Předání pole z formuláře do presenteru

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

Ahoj lidičky,
prosím mohu nějak předat pole z formuláře, který byl potvrzen do presenteru?

Nyní mi to fuguje pouze na string, ale nevím jak na pole či více stringů.

zde je submit pro formulář

public function searchFormSubmitted(AppForm $form)
	{
		if ($form['search']->isSubmittedBy()) {

			    $values = $form->getValues();
                        if ($values['nazev'] != NULL) {

                       // $hledej = $values;

                        $hledej = $values['nazev'];

                            //\Model\User::search($values['nazev']);
                }
                        else {

                            $this->flashMessage('Vykonaná podmínka else.');
                        }
         // predani promene $hledej do Default:search
          $this->redirect('search', array($hledej));
	}
       }

toto mám ve zpracování (v presenteru)

public function renderSearch($hledej)
        {
     // $this->template->hledej = $nazev;
      $this->template->search = \Model\User::search($hledej);
   }

mooc díky za pomoc
tOm

frosty22
Člen | 373
+
0
-

No v příkladu však pole nepředáváš, v proměnné $hledej máš pouze jednu hodnota, avšak tedy:

<?php
public function searchFormSubmitted(AppForm $form)
{
   $hledej = array("neco", "neco dalsiho", "a dalsi");
   $this->redirect('search', array($hledej));
}
?>

A v presenteru:

<?php
public function actionSearch(array $hledej)
{
   var_dump($hledej); // toto by mělo být vždy pole
}
?>

PS: Pokud se ti to jeví lehce magické, tak je to také tím, že nette reflexí zjišťuje, jaký typ action požaduje, čili pokud tam uvedeš array, tak nette bude generovat odkazy jako pole, například tedy:

{plink search, hledej => "neco"}

→ pokud budeš mít uvedeno array u action search, tak to vygeneruje odkaz:

http://www.neco.xx/neco/search/?hledej[0]=neco

Pokud to dáš pryč, tak však vygeneruje

http://www.neco.xx/neco/search/?hledej=neco

Snad jsem to napsal správně :)

Editoval frosty22 (7. 10. 2011 15:09)