Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Autocomplete + ZendX + Jquery
Forum PHP.pl > Forum > PHP > Frameworki
MitS
Witam serdecznie,

mam mały problem z autocompleterem z jquery ui w połaczeniu z ZF.
Mianowicie mając taki przykład:

  1. <?php
  2.  
  3. $cities = array('Warszawa', 'Władysławowo', 'Wawka', 'Olsztyn', 'Olsze', 'Olkusz');
  4. echo $this->autocomplete("ac1", "", array('cities' => $$cities));
  5.  
  6. ?>


i wynikiem jest podpowiadanie danych miast w zalezności od wpisanej frazy.
To działa w jak najlepszym porzadku, lecz potrzeba mi więcej danych w podpowiadaniu np. mając dwie tablice:

  1. <?php
  2.  
  3. $regions = array(1 => 'mazowieckie', 3 => 'warmińsko-mazurskie', 8 => 'Pomorskie');
  4. $cities = array(1234 => 'Warszawa', 6107 => 'Władysławowo', 2943 => 'Wawka', 214 => 'Olsztyn', 22445 => 'Olsze', 8263 => 'Olkusz');
  5.  
  6. ?>


chciałbym by podpowiedz wyglądała w taki sposób:

Kod
warszawa, mazowieckie


zaś wybranie danej pozycji powoduje callback klucza z powyzszych tablic zarówno dla miast jak i województw, czyli w tym wypadku było by zwracane:
1234 oraz 1.

Ma ktoś propozycje wykonania tego?
Korzystam z Zend 1.10.7 komponentu ZendX i najnowszego Jquery (wraz z UI)
smentek
Musisz powiązać miasta z odpowiednimi województwami. Coś jak:

  1. //$x to miasto zwrócone z mechaznimu autocomplete
  2. $locationFromAutocomplete = $x;
  3.  
  4. $locationToVoivodship = array( 'Warszawa' => 'mazowieckie' , 'Gdańsk' => 'pomorskie' ) );
  5.  
  6. if( isset( $locationToVoivodship[$locationFromAutocomplete] ) )
  7. {
  8. $output = "{$locationFromAutocomplete} {$locationToVoivodship[$locationFromAutocomplete]}";
  9. }
MitS
tzn samo "wyplucie" "miasto, województwo" nie nalezy do trudniejszych rzeczy, sbardziej mnie interesuje przekazanie takich tablic do autocompleter'a i zwrócenie wartości w jakimś callbacku po zaznaczeniu pozycji.
smentek
Cytat
tzn samo "wyplucie" "miasto, województwo" nie nalezy do trudniejszych rzeczy, bardziej mnie interesuje przekazanie takich tablic do autocompleter'a i zwrócenie wartości w jakimś callbacku po zaznaczeniu pozycji.


Wyplucie "miasto, województwo" to wszystko co tak naprawdę musisz zrobić. A w każdym razie na 90% tak jest. Do czego mialy by sluzyc identyfikatory o których piszesz:

Cytat
zaś wybranie danej pozycji powoduje callback klucza z powyzszych tablic zarówno dla miast jak i województw, czyli w tym wypadku było by zwracane:
1234 oraz 1.


To co tutaj opisujesz to nie jest już autocomplete ale jakieś kolejne requesty asynchrnoiczne, które jeżeli dobrze rozumiem miały by następować po tym jak już zaznaczysz odpowiednią pozycję? To złe podejście. Po co 2 razy odpytywać po to samo? Raz po nazwy obiektów np: "Zachodniopomorskie Koszalin" a potem drugi raz po jego identyfikatory np: 123, 10?

Jeżeli faktycznie potrzebujesz i identyfikatorów i nazw to:
1. Request powinien być jeden.
2. Powinien zwracać wszystkie potrzebne dane zakodowane w formacie JSON (lub XML) dla wszystkich zwracanych elementów.
3. Musisz wpiąć się w javascript w miejscu w którym jest odbierany request i zrobić to co potrzebujesz zrobić.

Jeżeli automat z którego korzystasz (nie bawilem sie ajaxem na zend-framework) zwraca z request htmla to musisz go przekonfigurować tak aby zwracał JSON. Jeżeli nie jest to mozliwe to olej to i oprogramuj własne rozwiązanie. Własny skrypt js odpalany jedynie dla odpowiedniego widoku/widoków. Plugin jQuery autocomplete ma wszystko opisane.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.