2011-02-10 61 views
0

我使用的是Drupal 6.19,爲了對錶單做一些修改,我使用form_alter鉤子在網上學習了一些教程。 很好地識別表單包含測試$ form_id(工作正常),但添加新字段是通過操作$ form變量完成的。 當我在我的代碼上嘗試了這一點,它沒有工作,所以我試圖操縱$ form_id變量,而不是它的工作! 我知道我的問題已解決,但我想知道$ form_id和$ form之間有什麼區別? 是不是$ form_id假設只存儲表單標識符?表單內容進入$ form?錯誤的form_later()掛鉤行爲?

+0

你可能要包括一些代碼片段,來說明你在做什麼。你是對的,$ form_id應該只是一個標識表單的字符串。 $ form變量是一個包含表單結構的數組。 – 2011-02-10 18:47:34

回答

0

好吧,這裏是我的form_alter鉤代碼: 順便說一句,我用DBUG查看變量的內容(這就是我想通了,$形式一點兒也不含有型結構)

function testymodule_form_alter($form_id, &$form) { 
include_once("dBug.php"); 

if ($form_id['#id']=='node-form') { 
    $form_id['testymodule_checkbox'] = array(
'#type' => 'checkbox', 
'#title' => t('Newly testy Checkbox'), 
); 
    new dBug($form_id); 
} 

這將增加一個新的複選框所提到的形式(雖然它maniuplate $ form_id不是$形式)

我在網上找到了操縱$形式:

function testymodule_form_alter($form_id, &$form) { 
include_once("dBug.php"); 

if ($form_id['#id']=='node-form') { 
    $form['testymodule_checkbox'] = array(//here is the clue 
'#type' => 'checkbox', 
'#title' => t('Newly testy Checkbox'), 
); 
    new dBug($form_id); 
} 

這很奇怪嗎?

2

由於您使用的是Drupal 6,因此您使用的hook_form_alter語法錯誤。你所擁有的是鉤子的Drupal 5語法。這是它應該是什麼?

hook_form_alter(& $形式,& $ form_state,$ form_id)

因爲你使用它你的方式,在$ form_id變量實際上是$形式變量。嘗試交換到正確的一個,這將幫助你。

下面是對文件的鏈接:Drupal API: hook_form_alter