2011-01-05 14 views
0

"form_mods"と呼ばれるすべてのフォーム変更を行うモジュールを作成しました。ほとんどの状況では機能しますが、Taxonomyページでは機能しません。Drupal hook_form_alter for Taxonomy admin

私は "taxonomy_overview_vocabularies"のフォームIDをターゲットにしています。私は、 "webmaster"と "dj"の役割のためのリンク "edit vocabulary"を隠そうとしています。

私のコードは$ 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

関連する問題