CakePHP 3 - 搜索建议

时间:2017-07-18 06:51:04

标签: php jquery cakephp cakephp-3.0

我正在尝试使用Cakephp 3创建一个搜索建议输入框。我在线找到了一个教程,我试图实现它,但我没有得到教程中提到的建议。 (http://www.naidim.org/cakephp-3-tutorial-18-autocomplete

PagesController.php

public function chargesadd()
 {
    $this->loadModel('Charges');

    if ($this->request->is('ajax')) {
    $this->autoRender = false;
    $name = $this->request->query['term'];
    $results = $this->Customers->find('all', [
        'conditions' => [ 'OR' => [
            'name LIKE' => $name . '%',
            'id LIKE' => $name . '%',
        ]]
    ]);
    $resultsArr = [];
    foreach ($results as $result) {
         $resultsArr[] =['label' => $result['name'], 'value' => $result['id']];
    }
    echo json_encode($resultsArr);
 }
}

chargesadd.ctp

<?php use Cake\Routing\Router; ?>

<?php 
  echo $this->Form->input('customer_id', ['type' => 'text']);
?>

<script>
    jQuery('#customer-id').autocomplete({
         source:'<?php echo Router::url(array('controller' => 'Pages', 'action' => 'chargesadd')); ?>',
        minLength: 3
    });
</script>

我感觉 $ resultsArr 输出的方式有问题。但我无法正确弄清楚它有什么问题。

我正在使用CakePHP 3.4.7

1 个答案:

答案 0 :(得分:0)

我尝试了这种方法,但由于某些原因,如果有人试图执行自动完成功能或搜索建议功能,则无法解决此问题。

https://silviomoreto.github.io/bootstrap-select/

您需要生成下拉列表。基本上就是这样。并添加“selectpicker”类和相关的cdn资源。

<select class="selectpicker">
 <option>Mustard</option>
 <option>Ketchup</option>
 <option>Relish</option>
</select>

演示 - https://codepen.io/Rio517/pen/NPLbpP