You are here

搜索动作如何传递参数给当前表单呢?

moumouguoguo 的头像
Submitted by moumouguoguo on 星期三, 2013-09-25 11:22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function xxx_admin_stream($form, &$form_state,$arr_search=array()) {
 
$output['list'] = array(
   '#type' => 'container',
   '#id' => 'xxx_list_wrapper',
);
 
$output['list']['words'] = array(
  '#type' => 'textfield',
  '#title' => t('用户名'),
  '#size' => 30
);
$output['list']['buttons'] = array(
   '#type' => 'submit',
   '#value' => t('搜索'),
   '#submit' => array('xxx_admin_stream_search_submit'),
);
...,,,,这是是一堆SQL语句,可以根据传来的搜索参数$arr_search,判断不同的查询条件,并输入内容表格
 
}
?
1
2
3
4
5
6
7
function xxx_admin_stream_search_submit($form, &$form_state) {
    $words = trim($form_state['values']['words']);
    $arr_search['words'] = $words;
    if(!empty($arr_search)){
        xxx_admin_stream($form, $form_state,$arr_search);
    }
}

我的代码是上面那样写的,没有效果。不知道哪里写错了,请指点一下,谢谢了。

论坛:

Drupal版本:

moumouguoguo 的头像

葛老师,经过我的研究,我发现只要$_POST获取就可以了,哎,把简单的东西想复杂了。

另外,还是有一个问题,

$keyword = '';
if(isset($_POST['keyword'])){
   $keyword = trim($_POST['keyword']);
}
$query = db_select('experience_stream', 'es')->extend('PagerDefault')->extend('TableSort');
    $query->fields('es', array( 'action_id', 'exp','created'))
    ->fields('u', array('name'));
    $where = "1,1";
    if(!empty($keyword)){
        $query ->condition('u.name','%'.$keyword.'%','LIKE');
    }
    $query->orderByHeader($header);
    $query->limit( 30);
    $query->join('users', 'u', 'es.uid = u.uid');
    $rows = array();

我发现这样写,没有效果,

但是
    $query ->condition('u.name','%b%','LIKE');
    $query->orderByHeader($header);
    $query->limit( 30);
    $query->join('users', 'u', 'es.uid = u.uid');

直接这样的时候,却是有用的,我打印$keyword,都是有传递值过来的。不明白哪里写错了,D7好多坑!!后来改成下面这样,也不行

if (array_key_exists('keyword', $_POST)) {
        $query->condition('u.name', '%' . db_like($_POST['keyword']) . '%', 'LIKE');
    }

 

参照:http://stackoverflow.com/questions/7828129/drupal-7-case-insensitive-lik...

这里人家遇到的只是大小写问题,我的问题在哪里呢?

g089h515r806 的头像

你可以通过drupal_set_message将'%'.$keyword.'%'输出看看,里面到底什么值,是不是左边有空格什么。有时候一点很小的问题,就会导致程序不正常。