Vyhledávání uživatelů z databáze

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

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)

motorcb
Člen | 552
+
0
-

Aleš Jandera:
Bez toho přesměrování by to nefungovalo?

public function searchFormSubmitted(Form $form)
{
        $values = getValues();
        $this->templates->Users = $this->context->createUsers()->where(´username´, $values->search);
}
Aleš Jandera
Člen | 24
+
0
-

Nejsem ted na svém počítači za hodinku vyzkouším a napíšu jak to dopadlo.

duke
Člen | 650
+
0
-

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
+
0
-

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

vvoody
Člen | 910
+
0
-

Ked ju napises rucne a funguje tak v route by problem byt nemal. Typujem to na ten tvoj redirect, skus toto:

$this->redirect('User:default',$search);

pripadne aby sa s tym nette netrapilo tak

$this->redirect('User:default',array('search'=>$search));
Aleš Jandera
Člen | 24
+
0
-

Díky moc :)

Bylo to tím špatným redirectem. Teď už to běží jak má.