AutoComplete a pevne dane GET parametry

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

Snazim se zapracovat tento AutoComplete do mého formuláře, který mám jako samostatnou komponentu.

Část JavaScriptu, která zasílá požadavky PHP skriptu vypadá takto:

$.ajax({
  								// try to leverage ajaxQueue plugin to abort previous requests
  mode: "abort",
  // limit abortion to this input
  port: "autocomplete" + input.name,
  dataType: options.dataType,
  url: options.url,
  data: $.extend({
  	q: lastWord(term),
  	limit: options.max
  }, extraParams),
  success: function(data) {
  	var parsed = options.parse && options.parse(data) || parse(data);
  	cache.add(term, parsed);
  	success(term, parsed);
}

options.url je nastaveno v šabloně jako {link search!}

Na straně PHP mám obsluhu signálu Search takto:

public function handleSearch($q, $limit)
{
    // <HACK>
    $q = $_GET['q'];
    $limit = $_GET['limit'];
    // </HACK>

    if (mb_strlen($q) > 0) {

        $q = mb_strtolower($q);

        $model = $this->presenter->getModel('tasks');
        $found = $model->searchEmployees($q, $limit);

        foreach ($found as $key=>$value) {
            echo "$key|$value\n";
        }

    }
    # Terminate Nette
    $this->presenter->terminate();
}

Problém je, že parametry q a limit nemají v metodě handleSearch žádnou hodnotu (null), proto jsem pouzil hodnoty primo z pole $_GET, aby to fungovalo. Kdyz si zkusim, na co se prepise: {link search!, ‚test‘, 5}, tak je to toto:

tasks/?tasksForm-component-q=test&tasksForm-component-limit=5&do=tasksForm-component-search

problem je tedy v tom, ze parametry se jmenuji spatne v JavaScriptu (misto limit by melo byt tasksForm-component-limit).

Jde toto nejak rozume resit, aniz bych musel upravovat JavaScript?

Díky za pomoc!

Editoval MartyIX (9. 10. 2010 12:41)

srigi
Nette Blogger | 558
+
0
-

Ten nazov budes musiet dodrzat alebo to tahat z $_GET. Pri prvej moznosti si to mozes zjednodusit, tak ze prefix vyparsujes z ID formulara. V druhom pripade si parametre vytiahni z pomocou metody Presentera $this->getPresenter()->getParam('q'). Bohuzial inak sa z toh neda, ten format je dany frameworkom interne a pouziva sa prave preto aby handler signalu dostal tie parametre ako argumenty.

MartyIX
Člen | 217
+
0
-

Diky moc!