Vyhledávání uživatelů z databáze
- Aleš Jandera
- Člen | 24
Ahoj,
potřeboval bych poradit s jednou nejspíš strašně lehkou věcí. Potřeboval bych na stránce pod vyhledávacím políčkem zobrazovat výsledky vyhledávání. Mám normálně vytvořený formulář v presenteru, ale nevím jak ho zpracovat. Tabulku mám připojenou v továrničce, mám jich ta mněkolik a normální výpis z databáze taky funguje.
Napadlo mě:
public function searchFormSubmitted(Form $form)
$values = getValues();
$this->templates->Users = $this->context->createUsers()->where(´username´, $values->search);
$this->redirect(´this´);
a v šabloně mám potom:
{foreach $Users as $Users}
{$Users->Nick}{$Users->username}
<br>
{/foreach}
Redirect se normálně provede, takže formulář se zpracovává, žádné hédnoty se nevypíšou.
Děkuji za rady případně mě nasměrujte uplně jiným směrem. Vím že vyhledávání pod nette bude určitě jednoduché. V php bych to měl hned, ale občas se v nette zaseknu na primitivních věcech.
AJ
Editoval Aleš Jandera (20. 6. 2012 16:04)
- duke
- Člen | 650
Volání redirect
je správně, neboť po úspěšném
zpracování formuláře by mělo vždy následovat přesměrování. Špatně
je to, kde nastavuješ obsah šablony. To bys měl dělat až v render metodě.
Tj. v metodě searchFormSubmitted
jen proveď redirekci na
správný link (který by měl obsahovat všechny potřebné údaje). Lze
k tomu použít např. persistentní parametry presenteru, či přímo
parametry dané akce presenteru.
- Aleš Jandera
- Člen | 24
Díky za nasměrování správným směrem.
V searchFormSubmitted jsem nechal pouze redirect:
public function searchFormSubmitted(Form $form)
{
$values = $form->getValues();
$search = $values->search;
$this->redirect('User:default $search');
}
Ale hází mi to že je chyba v routě. Když adresu napíšu ručně tak všechno funguje.
Routa je:
$container->router[] = new Route('<presenter>/<action>[/<id>]/ ? search=<search>', 'User:default');
Poraďte prosím jak to správně naroutovat. Díky