2011-03-20 189 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