查看将动作发送到控制器并返回查询

时间:2013-10-18 01:34:45

标签: php apache cakephp frameworks cakephp-2.0

我还是喜欢使用cakephp的菜鸟,但我很想知道如何使用它,为此,我正在努力开发一些非常简单的东西。

我有一个表单,它有一个输入类型='text',我想在我的数据库中搜索我刚输入的内容。

我该怎么做?

我知道我必须得到输入文本中的内容并在我的控制器中执行一个函数,该函数将接收一个参数并执行查询并将相同的查询返回给我的视图。

我无法做到的其他事情是:

<button type="submit" class="btn"><i class="icon-search"></i></button>

我想将其更改为蛋糕格式,例如:

echo $this->Form->input('button', array('class' => 'btn', type = 'submit'));

但不知道如何添加图标。

感谢。

2 个答案:

答案 0 :(得分:0)

您可以指定按钮文本,如。

<?php 

  echo $this->Form->button(
    "<i class='icon-search'></i>", 
    array(
            'class' => 'btn', 
            'type' => 'submit', 
            'escape' => false
  )); // make sure you've use escap = false with html input.

?>

并且对于搜索,您可以像这样定义动作。

<?php

public function search() {
        $conditions = array();
        $params = $this->passedArgs;

        if(isset($params['text_field_name']) && !empty($params['text_field_name'])){
            $conditions['ModelName.text_field_name like'] = $params['text_field_name'].'%';
        }


        $this->Paginate->settings = array(
            'conditions' => $conditions
        );

        $this->set('variable_name', $this->Paginator->paginate());
    }
?>

答案 1 :(得分:0)

你也可以用它来搜索

----在.ctp文件中

<?php echo $this->Form->create('ModelName'); ?>

<?php echo $this->Form->input('ModelName.search_word'); ?>
<?php  echo $this->Form->submit(" <i class='icon-search'></i> " , array('escape' => false  , 'class' => 'btn' ) ); ?>

<?php echo $this->Form->end(); ?> // note that no params for end() method

----在您的控制器文件中

$searchWord = $this->request->data['ModelName']['search_word'] ;

$this->paginate = array('limit' => 30 ,
            'conditions' => array('OR' => array('ModelName.field1' => "%".$searchWord."%" ,
                                        'ModelName.field2 LIKE' => "%".$searchWord."%" )));

$this->set('searchResults', $this->paginate());