SuggestInput aneb našeptávač

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

Updatoval jsem addon a ted je kompatibilni s Nette 2.0 (SuggestInput v2.0) i s Nette 2.1 (SuggestInput v2.1).

Vse je na Gitu: https://github.com/…put/releases

Editoval peci1 (13. 2. 2014 22:04)

dobby
Člen | 10
+
0
-

@peci1: Prosim Ta, da sa nejako pomocou SuggestInputu spravit to, aby som mohol nacitat z databazy dvojrozmerne pole (id=>nazov), do nasepkavaca by som potom pisal (vyhladaval) podla pola nazov a niekde do formulara by to ukladalo id? Snazim sa totiz spravit formular, ktory obsahuje nazov firmy, ale do databazy potrebujem ulozit jej ID z druhej tabulky.. Vedel by si ma nejako naviest, alebo nejako pomoct?

Vopred velmi pekne dakujem.
Miso

peci1
Člen | 60
+
0
-

dobby napsal(a):

@peci1: Prosim Ta, da sa nejako pomocou SuggestInputu spravit to, aby som mohol nacitat z databazy dvojrozmerne pole (id=>nazov), do nasepkavaca by som potom pisal (vyhladaval) podla pola nazov a niekde do formulara by to ukladalo id? Snazim sa totiz spravit formular, ktory obsahuje nazov firmy, ale do databazy potrebujem ulozit jej ID z druhej tabulky.. Vedel by si ma nejako naviest, alebo nejako pomoct?

Vopred velmi pekne dakujem.
Miso

Ahoj Miso, takze v podstate chces, aby se choval skoro jako combobox? Nerikam, ze to nejde, ale chtelo by to asi integralnejsi zasah do celeho addonu. Tj. aby naseptavaci JSON neposilal jen stringy, ale i jejich id. A pak je to samozrejme potreba nejak zpracovat (bud pridat jako soucast komponenty <input type=„hidden“>, ve kterem bys drzel ty id, nebo treba vyuzit data- atributy stavajiciho tagu).

Jako takovy workaround me napada pouzit naseptavac tak, jak je, ve verzi, kde kontroluje, aby uzivatel odesilal jen naseptavana data (je to v examples). A potom ve zpracovani formulare muzes pridat budto filtr nebo natvrdo prepsat value te komponenty na to, co vraci model jako id.

Doufam, ze je to pochopitelne :) Kdyby ses rozhodl nepouzit workaround a upravit cely addon, tak forkni a muzeme to potom zapracovat jako novou funkci suggesteru.

dobby
Člen | 10
+
0
-

Prave som to spravil :) Sice neviem, ako sa mi to podarilo, ale funguje to.. pracovnu verziu (ja debil som to neforkol z gitu, ale stiahol ako zip :-D ) hadzem na web, tu je linka:

http://1drv.ms/1d22H8l

Co som vlastne zmenil?

  • presenter – pridal som policko s ID
  • SuggestInput.php – pridana premenna $idField a metody setIdFieldgetIdField
  • DbSuggester.php:
    • pridane protected $idColumn = NULL;
    • upraveny konstruktor, doplneny dalsi parameter
    • vytvorene metody setIdColumn a getIdColumn
    • zmenena metoda getSuggestions:
      • pridana podmienka kontroly idColumn == '' + zmenena hlaska v Exception
      • modifikovany dotaz na databazu (pridany vyber dalsieho stlpca – idColumn)
      • premenna matches je array (idColumn=>value)
  • jquery.suggest.js
    • riadky 88–91
    • riadok 365
    • riadok 413 vymeneny za riadok 414
    • riadok 421
    • riadky 454 – 456

Mne to funguje, dufam, ze bude aj tebe a este raz sa ospravedlnujem za to, ze som to neforkol, ale priznam sa otvorene, ze som nepredpokladal, ze sa mi to podari urobit :-)

Jan Mikeš
Člen | 771
+
0
-

dobby napsal(a):

Mne to funguje, dufam, ze bude aj tebe a este raz sa ospravedlnujem za to, ze som to neforkol, ale priznam sa otvorene, ze som nepredpokladal, ze sa mi to podari urobit :-)

Fyi, muzes udelat fork dodatecne a prepsat zdroje klonu tvymi upravenymi zdroji, ve vysledku by mel byt diff uplne stejny ;)

dobby
Člen | 10
+
0
-

@Lexi: Ano, uz mi to doslo :-) Pisal som to v noci, uz som ani nevidel na klavesnicu :-)
Uz je to pridane ako Pull Request, tak dufam, ze @peci1 sa v tom nejako bude vyznat :)

Pre ostatnych, tu je funkcna verzia SuggestInputu, ktory vyhladava podla jedneho stlpca a do druheho formularoveho pola dava hodnotu z ineho stlpca z databazy:

https://github.com/…SuggestInput

Mne to funguje, dufam, ze bude aj vam.. Zatial to neni okomentovane, ale naozaj nebol cas :-)

Editoval dobby (20. 2. 2014 10:58)

gorgee
Člen | 1
+
0
-

Zprovoznil jsem si SuggestInput.
V normálním formuláři mi funguje.
Pokud formulář vytvářím dynamicky jako snippet, tak „nechodí“ událost volaná při zadávání textu.

Poraďte prosím. Děkuji.