Drupal 7 开发内部培训资料, 分头诗人

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

赞成!
0
否决!
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,判断不同的查询条件,并输入内容表格

}
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);
	}
}

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

2 个回答

赞成!
0
否决!
/**
 * Process a search form submission.
 */
function search_form_submit($form, &$form_state) {
  $keys = $form_state['values']['processed_keys'];
  if ($keys == '') {
    form_set_error('keys', t('Please enter some keywords.'));
    // Fall through to the form redirect.
  }

  $form_state['redirect'] = $form_state['action'] . '/' . $keys;
  return;
}

这是drupal核心的搜索实现方式,可以知道他是通过最后一句$form_state['redirect'] = $form_state['action'] . '/' . $keys; 实现跳转到一个特定的页面地址,而$keys 正是搜索关键词,所以可以得知drupal 核心是通过路径来实现传达数据的。

赞成!
0
否决!

$form_state['redirect'] = $form_state['complete form']['#action'] . '/' . $words;

我这里搞,好像不行呢?你继续搜索的话,都是在后面附加$words的