Komponenta pro výběr souvisejícího záznamu?

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

Mám agendu zakázek a k zakázce chci vybírat kontakt z databáze. Rád bych našeptávání, takže trochu dynamiky. Protože se ale výběr kontaktu bude opakovat ve více agendách, napovídá to použít komponentu, kterou ve formuláři nějak následně používat. Je toto funkční nette přístup? Půjde to? Díky.

Marek Šneberger
Člen | 130
+
0
-

Pokud jsem tě dobře pochopil, tak jsem nedávno dělal něco podobného.
Použil jsem na to jquery plugin autocomplete. Udělal jsem si akci, do které přišlo hledané slovo ($query), zeptal jsem se databáze na LIKE $query, a akce mi vrátila JsonResponse. Určitě to půjde nějak víc cool, ale tohle bylo na projektu s Nette 0.9 (možná i 0.8) a tak jsem to dál neřešil :)

bazo
Člen | 620
+
0
-

najjednoduchsie je si vytvorit vlastny formularovy prvok, s nastavitelnym naseptavacim callbackom

xxxmisko
Člen | 140
+
0
-

@bazo

vieš dať nejaký návod, ako na to?

bazo
Člen | 620
+
0
-

no podedis si text input.
priradis controle classu aku chces, spravis si setter na $suggestCallback, ktory bude prijimat uz vygenerovany odkaz
v getControl() zapises odkaz do data-callback napriklad.

v js navesis na tvoju classu hoicaky suggest script, ktoremu nastavis pre ajax hodnotu z data-callback atributu.

pouzitie v presenteri by vyzeralo takto:

$form = new Form;
$form->addMySuggestInput(...)->setSuggestCallback($this->link('suggest!'));
...
public function handleSuggest($term)
{
    $data = $suggester->find($term);
    $response = new JsonResponse($data);
    $this->sendResponse($response);
}

staci?

Editoval bazo (15. 4. 2013 19:49)

xxxmisko
Člen | 140
+
0
-

@bazo

Tak zrejme nestačí :(

Dediť input box myslíš, že si mám vytvoriť vlastnú triedu, ktorá extenduje Nette\Application\UI\Form a ktorá bude mať public function addMySuggestInput, pričom tam sa vytvorí new Controls\TextInput, ktorý bude mať ako parameter názov classy? Potom by som spustil na tento input funkciu setSuggestCallback, ktorá by nastavila callback na mnou zadanú linku?

tá frontová časť na stránke mi je celkom jasná, ale v nette a formulároch zatiaľ veľmi tápam. Dosť by si mi pomohol, keby som sa dozvedel, ako používať callbacky atď. Budem teraz robiť jeden formulár, ktorý sa bude dynamicky vykresľovať a budem tam potrebovať veľa infošiek. Totiž v dokumentácii som sa k mojim otázkam moc nedočítal.

Ďakujem za každé nasmerovanie, poprípade priamu pomoc.

bazo
Člen | 620
+
0
-

nie myslim podedit Controls\TextInput. To ako to dostanes do formualara je uz na tebe. Ja si vzdy vytvorim BaseForm ktory dedi Nette\Application\UI\Form a tam vytvaram metody ako je addMySuggestInput.

ale kazdy input je samostatna trieda

xxxmisko
Člen | 140
+
0
-

aha, a ešte taká vec, ako viem nasadiť na inputy daný callback, resp. tú linku? neviem, akú metódu mám použiť. Ak sa toto dozviem, budem zahojený :D

bazo
Člen | 620
+
0
-

sprav si setter.

potom v metode getControl()
{
$control->{‚data-callback‘} = $this->callbackLink
}