/ / Funkcja wyszukiwania nie działa przy użyciu wprowadzania danych z pola ID - cakephp

Funkcja wyszukiwania nie działa przy użyciu wprowadzania danych z pola ID - cakephp

Korzystam z wtyczki wyszukiwania https://github.com/cakedc/search. Próbuję wyszukać rekordy przy użyciu identyfikatoratylko pole, to znaczy, jeśli wpisuję 1 w formularzu wejściowym, musi pokazywać rekord o identyfikatorze użytkownika 1. Wyzwanie, które teraz mam, polega na tym, że określam, że dane wejściowe powinny być polem id, polem wejściowym dla wyszukiwania funkcjonalność znika w moim widoku indeksu, dziwne jest to, że kiedy podam inną nazwę pola, które pokazuje pole wejściowe.

Poniżej znajduje się mój kod dla mojego modelu

public $actsAs = array("Search.Searchable");

public $filterArgs = array(
"id" => array("type" => "like", "field" => "ItSupportRequest.id"),
);

public function findByTags($data = array()) {
$this->Tagged->Behaviors->attach("Containable", array("autoFields" => false));
$this->Tagged->Behaviors->attach("Search.Searchable");
$query = $this->Tagged->getQuery("all", array(
"conditions" => array("Tag.name"  => $data["tags"]),
"fields" => array("foreign_key"),
"contain" => array("Tag")
));
return $query;
}

public function orConditions($data = array()) {
$filter = $data["filter"];
$cond = array(
"OR" => array(
$this->alias . ".id LIKE" => "%" . $filter . "%",
));
return $cond;

}

a oto mój kod kontrolera.

public $components = array("Search.Prg");

public $presetVars = true; // using the model configuration

public function find() {
$this->Prg->commonProcess();
$this->paginate["conditions"] = $this->ItSupportRequest->parseCriteria($this->passedArgs);
$this->set("articles", $this->paginate());
}

aw moim pliku index.ctp mam ten kod.

<?php
echo $this->Form->create("ItSupportRequest", array(
"url" => array_merge(array("action" => "find"), $this->params["pass"])
));
echo $this->Form->label("Query ID:") . "<br/>";
echo $this->Form->input("name", array("div" => false, "label" => false));

echo $this->Form->submit(__("Search"), array("div" => false));
echo $this->Form->end();
?>

Z góry dziękuję.

Odpowiedzi:

0 dla odpowiedzi № 1

Nie powinieneś nazywać go id, ponieważ id będzie ukryty (ponieważ Cake zakłada, że ​​jest to tutaj klucz podstawowy).

Nazwij to coś innego lub ręcznie zastąp to zachowanie za pomocą

$this->Form->input("id", array("type" => "text"));

Ale wybrałbym coś takiego jak „szukaj” i

$this->Form->input("search", array("placeholder" => "ID to look for"));

i

public $filterArgs = array(
"search" => array("type" => "like", "field" => "ItSupportRequest.id"),
);