gpt4 book ai didi

php - 自动完成搜索表单 cakephp

转载 作者:可可西里 更新时间:2023-10-31 23:50:20 25 4
gpt4 key购买 nike

嘿,我是一个新手,我正在寻找一种方法来像谷歌一样拥有一个具有自动完成功能的搜索框。

我已经搜索过,我找到的最佳前景似乎是 http://www.pengoworks.com/workshop/jquery/autocomplete.htm我在论坛上找到的。建议它的人说他将它与 http://code.google.com/p/searchable-behaviour-for-cakephp/ 一起使用这是完全正确的,因为我在上次尝试弄清楚 cakephp 时设法安装了 searchable。

问题是,我以前没有使用过太多的 javascript,我对我到底要做什么感到有点困惑。带有自动完成代码的文档没有涉及任何我能理解的细节。

如果我们假设我设法正确安装了可搜索行为,那么任何好心的人都可以向我解释我将如何进行自动完成工作吗?

它说只需使用:

$("selector").autocomplete(url [, options]);

例如:

$("#input_box").autocomplete("autocomplete_ajax.cfm");

自动完成需要一个 ID 为“input_box”的输入元素存在。当用户开始在输入框中键入内容时,自动完成器将使用名为 q

的 GET 参数请求 autocomplete_ajax.cfm

那是我不明白的一点。我应该把它放在哪里?一旦我把它放在某个地方,我是否只需要将我的输入之一命名为“input_box”?

提前致谢。

最佳答案

分为三个步骤:

1) 在您的 View 中使用 Html 帮助程序,创建一个带有输入字段的完全正常的表单:

// app/views/foo_bars/search.ctp
<?php
echo $this->Form->create('FooBar');
echo $this->Form->input('field');
echo $this->Form->end('Submit');
?>

2) 触发 jquery 自动完成:

// app/views/foo_bars/search.ctp
<?php
echo $this->Html->scriptBlock(
.'$("#FooBarField").autocomplete({'
.'source:"/foo_bars/find",'
.'delay: 100,'
.'select:function(event,ui){$(this).parent().parent().children("input").val(ui.item.id);},'
.'open:function(event,ui){$(this).parent().parent().children("input").val(0);}'
.'});'
array('inline' => false));
?>

3) 通过 Controller 查询数据库以获得可能的值:

// app/controllers/foo_bars_controller.php
<?php
public function find() {
if ($this->RequestHandler->isAjax()) {
$this->autoLayout = false;
$this->autoRender = false;
$this->FooBar->recursive = -1;
$results = $this->FooBar->find('all', array('fields' => array('id', 'name'), 'conditions' => array('name LIKE "%'.$_GET['term'].'%"')));
$response = array();
$i = 0;
foreach($results as $result){
$response[$i]['value'] = $result['FooBar']['name'];
$response[$i]['id'] = $result['FooBar']['id'];
$i++;
}
echo json_encode($response);
}
}
?>

关于php - 自动完成搜索表单 cakephp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com