2011-01-05 53 views
0

我創建了一個模塊來完成所有我的表單變更,稱爲「form_mods」。它適用於大多數情況,但不適用於Taxonomy頁面。Drupal hook_form_alter分類管理

我針對的是「taxonomy_overview_vocabularies」的表單ID。我試圖隱藏「webmaster」和「dj」角色的「編輯詞彙」鏈接。

我的代碼正確地設置了$ form數組,但Drupal仍在顯示「編輯詞彙表」鏈接。

function form_mods_form_alter($form, $form_state, $form_id) { 

    if($form_id == 'taxonomy_overview_vocabularies'){ 

     global $user; 
     $hide=0; 
     $hideArray = array('webmaster', 'dj'); 
     foreach($user->roles AS $key => $value){ 
      if(in_array($value, $hideArray)){ 
       $hide++; 
      } 
     } 

     if($hide){ 
      foreach($form AS $vocab){ 
       //print_r($vocab); 
       if(isset($vocab['edit']['#value'])){ 
        unset($vocab['edit']['#value']); 
       } 
      } 
     } 
    } 
} 

回答

0

非常小的PHP錯誤, 當你想改變陣列中的成員對你有參考&foreach($form AS &$vocab)通過他們每個語句,否則$翻譯將只是一個數組的副本

foreach($form AS &$vocab){ 
     //print_r($vocab); 
     if(isset($vocab['edit']['#value'])){ 
      unset($vocab['edit']['#value']); 
     } 

    } 
+0

就是這樣!謝謝。 – EricP 2011-01-05 23:24:45