2011-03-20 154 views
0
if (in_array($form['#submit'], 'search_box_form_submit')) { 
    $key = array_search('search_box_form_submit', $form['#submit']); 
    unset($form['#submit'][$key]); 
} 

array_unshift($form['#submit'], 'mymodule_search_box_submit'); 

代码是做什么的?我不遵循它;我希望有人能够一行一行地向我解释。这段代码做了什么?

+0

不太可能这是“正确”的方法,但没有上下文只是一个受过教育的猜测。 – 2011-03-20 03:26:31

回答

1

if (in_array($form['#submit'], 'search_box_form_submit')) {

如果值'search_box_form_submit'是存在于阵列$form['#submit']

$key = array_search('search_box_form_submit', $form['#submit']);

然后设置可变$key到阵列中的值'search_box_form_submit'阵列密钥$form['#submit']

unset($form['#submit'][$key]);

然后复位(删除)数组元素

array_unshift($form['#submit'], 'mymodule_search_box_submit');

将一个新元素在阵列$form['#submit']的开头的值'mymodule_search_box_submit'

1

是文本“search_box_form_submit”在数组$形式[ '#submit']
若然找到search_box_form_submit
密钥然后从数组中删除

将数值mymodule_search_box_submit放在数组的前面$ form ['#submit']

我推荐阅读所用函数的手册页。

2

如果提交的表单包含名为“search_box_form_submit”的变量,请将其删除,然后添加名为“mymodule_search_box_submit”的新变量。

也许有人想重写drupal搜索功能,并且不希望默认处理器根本就不会触发。感谢kiamlaluno在评论中。

+0

这绝对是不好的......毫无疑问,有一个更好的方法来实现这个代码试图完成什么。 – prodigitalson 2011-03-20 04:22:06

+0

如果有人正在改变Drupal搜索框,并且他想避免执行原始表单提交处理程序,它不会闻到不好的气味。 – kiamlaluno 2011-03-21 10:12:40

+0

哈,好电话。这可能正是发生了什么事情。 – easel 2011-03-23 00:03:23