2011-01-05 5 views
0

"form_mods"라고하는 모든 양식 변경을 수행하는 모듈을 만들었습니다. Taxonomy 페이지가 아닌 대부분의 상황에서 작동합니다.Drupal hook_form_alter for Taxonomy admin

"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) 참조 로를 통과해야 각 문장에 대한에 배열 구성원을 변경하고자 할 때, 그렇지 않으면 $의 Vocab의 배열의 단지 사본 될 것

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

    } 
+0

그게 전부 !! 고맙습니다. – EricP