Sprawa jest taka:
w pliku: lib/form/base/baseAuthorForm.php wstawiam:
<?php 'model' => 'Author', 'url' => $this->getOption('url'))), ?>
w pliku: lib/model/AuthorPeer.php:
<?php { $criteria = new Criteria(); $criteria->add(AuthorPeer::SURNAME, '%'.$q.'%', Criteria::LIKE); $criteria->addAscendingOrderByColumn(AuthorPeer::SURNAME); $criteria->setLimit($limit); foreach (AuthorPeer::doSelect($criteria) as $author) { $authors[$author->getId()] = (string) $author; } return $authors; } ?>
w pliku modules/author/actions/actions.class mam:
<?php public function executeNew(sfWebRequest $request) { $this->isLoggedIn(); $this->form = new AuthorForm(new Author(), array('url' => $this->getController()->genUrl('author/auto'))); } public function executeAuto($request) { $this->getResponse()->setContentType('application/json'); $authors = AuthorPeer::retrieveForSelect($request->getParameter('q'), $request->getParameter('limit')); return $this->renderText(json_encode($authors)); } ?>
ta czesc dziala bez problemow i tworzy mi jsona z danymi pobranymi z mojej bazy...
to wszystko, po uruchomieniu tworzy taki kod strony:
<tr> jQuery(document).ready(function() { jQuery("#autocomplete_author_surname") .autocomplete('/bg/web/frontend_dev.php/author/auto', jQuery.extend({}, { dataType: 'json', parse: function(data) { var parsed = []; for (key in data) { parsed[parsed.length] = { data: [ data[key], key ], value: data[key], result: data[key] }; } return parsed; } }, { })) .result(function(event, data) { jQuery("#author_surname").val(data[1]); }); }); </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?