2011-07-26 4 views
1

나는 hook_node_presave를 사용하여 taxonomy 필드를 그룹의 잠재 고객 값으로 미리 채 웁니다. 따라서 노드 데이터 입력 양식에서 택 소노 미 필드를 숨기려고합니다. hook_form_alter를 시도했지만 나에게 도움이되지 못했습니다. 그것을 숨길 수 있습니까?drupal에서 노드 데이터 입력 폼의 필드를 숨기는 방법은 무엇입니까?

+0

'hook_form_alter' 코드를 보여줄 수 있습니까? – nmc

답변

5
<?php 

function mymodule_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'contenttype_node_form') { 
    unset($form['somefield']); 
    } 
} 
?> 

이 기능은 정상적으로 작동합니다. 양식 ID 및 타겟팅 할 양식 필드의 키를 변경하면 필드가 사라집니다.

어쨌든 입력이 프리 세이브에서 오버라이드 된 경우 CSS로 숨길 수 있습니다.

+0

form_alter가 나를 위해 작동하지 않았으므로 CSS 경로를갔습니다. 나는 다음을 시도했다 :'function test_prepopulate_form_alter (& $ form, & $ form_state, $ form_id) { watchdog ("test_prepopulate", 'field_test % field_test', array ('% field_test'=> print_r ($ form, true))); }'노드를 추가/편집했지만 로그에 메시지가 표시되지 않았습니다. 내가 뭔가 잘못하고 있는거야? –

+0

이 함수는 폼 ID를 검사하지 않는 것처럼 꽤 잘못 보입니다 ... 그러나 폼이로드되면 db에 쓰여야합니다. 맞지 않는 건가요? drupal 캐시를 플러시하고 다시 시도하십시오. 모듈의 이름이 실제로 'test_prepopulate'인 경우에만 작동해야합니다. – Coder1

+1

@Vlad Vinnikau : ['hook_form_FORM_ID_alter'] (http://api.drupal.org/api/drupal/modules--system--system.api.php/function/hook_form_FORM_ID_alter/7)를 사용하려는 경우) 네이밍 규칙에 따라 'yourmodulename_form_test_prepopulate_form_alter (...)'또는 이와 비슷한 이름이 필요합니다. 함수의 형식이 올바른지 확인하십시오. – nmc

관련 문제