Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Problem z autocomplete w Symfony
Forum PHP.pl > Forum > PHP > Frameworki
jimmy_lee
Ok, probuje wstawic funkcje autocomplete do jednego z moich formularzy. Uzywam do tego pluginu sfFormExtraPlugin - i nie moge nic zdzialac....

Sprawa jest taka:
w pliku: lib/form/base/baseAuthorForm.php wstawiam:

  1. <?php
  2. 'surname'    => new sfWidgetFormPropelJQueryAutocompleter(array(
  3.  'model' => 'Author',
  4.  'url'   => $this->getOption('url'))),
  5. ?>



w pliku: lib/model/AuthorPeer.php:

  1. <?php
  2. static public function retrieveForSelect($q, $limit)
  3.  {
  4.    $criteria = new Criteria();
  5.    $criteria->add(AuthorPeer::SURNAME, '%'.$q.'%', Criteria::LIKE);
  6.    $criteria->addAscendingOrderByColumn(AuthorPeer::SURNAME);
  7.    $criteria->setLimit($limit);
  8.  
  9.    $authors = array();
  10.    foreach (AuthorPeer::doSelect($criteria) as $author)
  11.    {
  12.      $authors[$author->getId()] = (string) $author;
  13.    }
  14.  
  15.    return $authors;
  16.  }
  17. ?>


w pliku modules/author/actions/actions.class mam:

  1. <?php
  2. public function executeNew(sfWebRequest $request)
  3.  {
  4.    $this->isLoggedIn();
  5.    
  6.    $this->form = new AuthorForm(new Author(), array('url' => $this->getController()->genUrl('author/auto')));
  7.  }
  8. public function executeAuto($request)
  9.  {
  10.    $this->getResponse()->setContentType('application/json');
  11.    
  12.    $authors = AuthorPeer::retrieveForSelect($request->getParameter('q'), $request->getParameter('limit'));
  13.    
  14.    return $this->renderText(json_encode($authors));
  15.  }
  16. ?>

ta czesc dziala bez problemow i tworzy mi jsona z danymi pobranymi z mojej bazy...

to wszystko, po uruchomieniu tworzy taki kod strony:
  1. <tr>
  2. <th><label for="author_surname">Surname</label></th>
  3. <td><input type="hidden" name="author[surname]" id="author_surname" /><input type="text" name="autocomplete_author[surname]" value="" id="autocomplete_author_surname" /><script type="text/javascript">
  4. jQuery(document).ready(function() {
  5. jQuery("#autocomplete_author_surname")
  6. .autocomplete('/bg/web/frontend_dev.php/author/auto', jQuery.extend({}, {
  7. dataType: 'json',
  8. parse: function(data) {
  9. var parsed = [];
  10. for (key in data) {
  11. parsed[parsed.length] = { data: [ data[key], key ], value: data[key], result: data[key] };
  12. }
  13. return parsed;
  14. }
  15. }, { }))
  16. .result(function(event, data) { jQuery("#author_surname").val(data[1]); });
  17. });
  18. </script></td>
  19. </tr>



w bazie danych sa rozne nazwiska autorow ksiazek, m.in. "Kerouack".
ok, teraz kiedy otworze ta strone i zaczynam wpisywac cos do pola 'surname' - pojawia sie pole autocomplete z tylko jedna, pierwsza litera nazwiska... po dopisaniu kolejnej litery, pole znika...

Moze mi ktos pomoc i wyjasnic o co wlasciwie chodzi?
tOm-i
Mam podobny problem ale mi wcale nie działa sad.gif
jimmy_lee
sprawdz, czy dolaczyles wszystkie pliki potrzebne dla jquery... i czy masz dobra wersje.
tOm-i
Wersję czego pluginu ?
Robiłem to generalnie wg. tego opisu:
http://www.symfony-project.org/blog/2008/1...ake-your-choice

to jest dla sf1.2 wiec powinno być ok.

--edit

przeinstalowalem plugin i nic :/
zeby nie było problemów to sobie css i js podlinkowałem z katalogu plugina i dodalem w
artykul/templates/indexSuccees.php
  1. <?php use_javascript('jquery.autocompleter.js') ?>
  2. <?php use_stylesheet('jquery.autocompleter.css') ?>


akcja artykul/ajax działa bo wypluwa do pliku wszystko z bazy ..

nie mam koncepcji sad.gif

wygenerowany kod:
  1. jQuery(document).ready(function() {
  2. jQuery("#autocomplete_uzywki_artykul_nazwa")
  3. .autocomplete('/frontend_dev.php/artykul/ajax', jQuery.extend({}, {
  4. dataType: 'json',
  5. parse: function(data) {
  6. var parsed = [];
  7. for (key in data) {
  8. parsed[parsed.length] = { data: [ data[key], key ], value: data[key], result: data[key] };
  9. }
  10. return parsed;
  11. }
  12. }, { }))
  13. .result(function(event, data) { jQuery("#uzywki_artykul_nazwa").val(data[1]); });
  14. });


pliki są też dołączone do html-a

  1. <script type="text/javascript" src="/js/jquery.autocompleter.js"></script>
  2. <link rel="stylesheet" type="text/css" media="screen" href="/css/main.css" />
  3. <link rel="stylesheet" type="text/css" media="screen" href="/css/jquery.autocompleter.css" />


a form-a tworzę poprzez
  1. $this->form = new UzywkiArtykulForm(new UzywkiArtykul(), array('url' => $this->getController()->genUrl('artykul/ajax')));



w BaseUzywkiNazwaForm.class.php
zastąpiłem
  1. 'nazwa' => new sfWidgetFormInput(),

tym
  1. 'nazwa' => new sfWidgetFormPropelJQueryAutocompleter(array(
  2. 'model' => 'UzywkiNazwa',
  3. 'url' => $this->getOption('url'))),
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.