Cakephp 2.5搜索框无效

时间:2015-06-22 11:43:45

标签: cakephp cakephp-2.5

我是CakePHP的初学者。我想做一个简单的搜索框,但它不起作用,下面是我的控制器中的代码: -

public function index() {         
    if ($this->request->is('post')) {
        $this->loadModel('Job');
        $this->request->data = $keyword; 
        $result = $this->Job->find('all', array(
            'condition'=>array('Job.title'=>'% $keyword %')
        ));
        $this->set('rslt',$result); 
        //$this->set('kc',$keyword);
    } 
}

我认为,我的代码如下: -

<?php echo $this->Form->create('search', array('type'=>'get'));?>
<?php echo $this->Form->input('search');?>
<?php echo $this->Form->end('Submit');?>    

<pre><?php print_r($rslt) ; ?></pre>

但搜索结果显示空白页。

3 个答案:

答案 0 :(得分:1)

您的代码似乎存在一些问题。

首先,您应该从请求数据中获取关键字,例如 $this->request->data。不要在示例代码中覆盖'Job.title LIKE' => '%' . $this->request->data['search']['keyword'] . '%';它是一个提交到页面的数据数组,你用字符串替换它!

其次,您的情况需要看起来像%。在PHP变量周围使用单引号将其视为字符串,因此不会将其替换为变量的值。相反,我们只引用LIKE s。

您还错过了条件索引中搜索的public function index() { if (!empty($this->request->data)) { $this->loadModel('Job'); $result = $this->Job->find('all', array( 'conditions' => array('Job.title LIKE' => '%' . $this->request->data['search']['keyword'] . '%') )); $this->set('rslt',$result); } } 关键字。

控制器中的代码应如下所示: -

SELECT TO_Char(ordered_date,'DD-MON-YYYY') as ordered_date,
    order_number, customer_name   
FROM order_tbl
WHERE NVL(:P_ORDER_NUMBER, order_number) = order_number
  AND ordered_date between NVL(TO_DATE(:P_FROM_DATE,'DD-MON-YYYY'),TO_DATE('01-MAR-1900','DD-MON-YYYY')) and NVL(to_date(:P_TO_DATE,'DD-MON-YYYY'),TO_DATE('31-DEC-2100','DD-MON-YYYY'))   
  AND NVL(:P_CUSTOMER_NAME, customer_name) = customer_name

答案 1 :(得分:0)

当您尝试在控制器中访问它时,您的表单方法设置为"GET"而不是发布。

//您的观看代码

<?php echo $this->Form->create('search', array('type'=>'get'));?>
<?php echo $this->Form->input('search');?>
<?php echo $this->Form->end('Submit');?>  

您应该在控制器中执行此操作。

if($this->request->is('get')){
  $keyword = $this->request->data['search'];
// OR $keyword = $_GET['search'];

$this->Job->find('all', array('conditions' => 
  'Job.colunmName LIKE' => '%'.$keyword.'%'
))
}

答案 2 :(得分:-1)

改变这个:

'% $keyword %'

到此:

'%$keyword%'

即删除空格,否则生成的SQL将尝试查找由空格包围的关键字。