AutoComplete a pevne dane GET parametry
- MartyIX
- Člen | 217
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
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.