2010-07-25 54 views
1

我想檢索一個cck字段「field_info」在我的表單alter當用戶提交時插入到另一個表。這似乎並不奏效。檢索cck字段for form_alter

//mymodule_form_alter() implemented 
     function mymodule_form_mysubmit{ 

      $test = $form['field_info']['#value']; 
     //insert stuff code 
    } 

代碼中是否有任何錯誤?

回答

2

你說module_form_alter()實施,但只是爲了確認,你必須有下列:

$form['#submit'][] = 'mymodule_form_mysubmit'; 

假設你,讓field_info的價值,你的提交功能,應該是這樣的:

function mymodule_form_mysubmit($form, &$form_state) { 
    $test = $form_state['values']['field_info'][0]['value']; 
} 

$form_state包含正在提交的表單的當前狀態。 CCK總是假設一個字段可能有多個值,所以它總是將數組放在一個數組中(因此['field_info'][0])。

0

我找到了解決辦法

 $test = $form['field_info'][0]['#value']; 
+2

的$形式陣列是不是安全的,因爲它包含了形式結構,而不一定是當前表單的值。在某些情況下 - 比如當drupal_execute提交表單時 - 值不會在那裏。使用$ form_state:它將始終包含值,並且它是Drupal方式。 – 2010-07-25 06:57:30

+0

非常感謝您的評論。我將開始使用它。 – charan 2010-07-25 12:11:36