首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cakedc搜索不起作用

cakedc搜索不起作用
EN

Stack Overflow用户
提问于 2013-09-26 00:28:53
回答 1查看 584关注 0票数 0

我已经尝试了每一个简单的cakedc搜索设置,并遵循了之前关于这个的文章中的代码样本,但它似乎就是不适合我。我不确定,但从我在数据库上运行的查询日志来看,似乎没有使用搜索字符串生成任何搜索查询。

任何帮助都将不胜感激。

模型

代码语言:javascript
复制
public $actsAs = array('Search.Searchable');
public $primaryKey = 'isbn13';

public $hasMany = array(
    'Contributor' => array (
        'className' => 'Contributor',
        'foreignKey' => 'isbn13'
        ),
    'Override' => array (
        'className' => 'Override',
        'foreignKey' => 'isbn13'
        )

);

public $filterArgs = array(
        'title' => array('type' => 'query', 'method' => 'filterTitle'),
         'main_desc' => array('type' => 'value')
);

public function filterTitle($data, $field = null) {
        if (empty($data['title'])) {
            return array();
        }
        $titleField = '%' . $data['title'] . '%';
        return array(
            'OR' => array(
                $this->alias . '.title LIKE' => $titleField,
                ));
}

控制器

代码语言:javascript
复制
class BooksController extends AppController {
public $helpers = array ('Html', 'Form');
public $paginate = array();
public $components = array('Search.Prg');
public $presetVars = true; 

public function index() {
    //get books
    $this->set('books', $this->Book->find('all'));

    //search
   /* $this->Prg->commonProcess();
    $this->paginate['conditions'] = $this->Book->parseCriteria($this->Prg->parsedParams());
    $this->set('books');
   */
}

 public function search($books = NULL) {
    $this->Prg->commonProcess();
    $this->paginate['conditions'] = $this->Book->parseCriteria($this->passedArgs);
    $this->set('books', $this->paginate());
}

视图

代码语言:javascript
复制
<h1>Search Results</h1> 
<?php
     echo $this->Form->create('Book'   , array(
        'url' => array_merge(array('action' => 'search'), $this->params['pass'])
        ));

    echo $this->Form->input('title', array('div' => false, 'empty' => true)); // empty       creates blank option.

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

路线

代码语言:javascript
复制
Router::connect('/', array('controller' => 'books', 'action' => 'index'));

Router::connect('/index/*', array('controller' => 'books', 'action' => 'search'
 )); 

Router::connect('/view/:url', array('controller' => 'books', 'action' => 'view', array('url' => '[\w\W]*')
 ));
Router::connect('/edit/:url', array('controller' => 'books', 'action' => 'edit', array('url' => '[\w\W]*')
 ));
Router::connect('/whatsnew/*', array('controller' => 'books', 'action' => 'whatsnew'
 ));
Router::connect('/search/*', array('controller' => 'books', 'action' => 'search'
 )); 

我已将搜索主文件夹重命名为Search,并将其放入我的插件目录中,并在我的bootstrap.php中加载了该插件

代码语言:javascript
复制
CakePlugin::load('Search');  
EN

回答 1

Stack Overflow用户

发布于 2013-09-27 22:32:26

修复了!所需的

代码语言:javascript
复制
$this->set('books', $this->paginate($this->Book->parseCriteria($this->passedArgs)));' 

而不是

代码语言:javascript
复制
$this->set('books', $this->paginate());'

在控制器中。不知道为什么..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19010401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档