2012-02-22 6 views
1

나는 현재 Drupal 사이트의 사용자 프로필 양식을 주제로 삼고 있습니다. 테마의 template.php 파일에서 hook_form_alter를 사용하고 있습니다.Drupal 7 - 사용자 프로필 양식

코드는 다른 양식을 편집하는 데 사용한 코드와 동일하지만 어떤 이유로 작동하지 않는다고 판단 할 수 없습니다.

function THEME_NAME_form_alter(&$form, &$form_state, $form_id) { 
    if ($form_id == 'user_profile_form') {  
     $form['current_pass']['#prefix'] = '<div class="loginFormBlock">'; 
     $form['current_pass']['#suffix'] = '</div>'; 
     $form['current_pass']['#size'] = '500'; 
     //$form['actions']['submit'] = array('#type' => 'image_button', '#src' => base_path() . path_to_theme() . '/images/Login.png'); 
    } 
} 

주석 처리가되지 않았지만 current_pass 비트가 아무 것도하지 않으면 주석 처리 된 제출 버튼 부분이 작동합니다. Current_pass는 내가 주제를 고를 필드의 이름입니다. THEME_NAME이 (가) 테마의 이름으로 대체되었습니다.

답변 :

으로 내가 $ 양식 배열로 보였다 제안했다.

echo '<pre>'; 
print_r($form); 
echo '</pre>'; 

current_pass가 계정 배열에 있었고 다음 코드를 수정하여 올바르게 작동합니다.

$form['account']['current_pass']['#size'] = '500'; 

다른 사람에게 도움이되기를 바랍니다.

+0

current_pass가 기존 프로필 필드입니까? 디버깅을 시도하고'$ form [ 'current_pass']'(변경하기 전에) 내부에 무엇이 있는지 확인하십시오. – soju

답변

2

나는 똑같은 말을하려고했다. $ form의 덤프를 수행하고 필드가 실제로 존재하는지 확인한다. 만약 그렇다면 여전히 작동하지 않는다. 당신의 변화.

ps : 아직 D6을 사용하고 있지만 올바른 위치에 form_alter 함수를 넣고 있습니까? 너의 말은 THEME_NAME_form_alter이다 - 나는 D6에서 theme layer가 아닌 module layer에 넣어야한다는 것을 안다. (이것이 D7에서 변경되지 않는다면?) - 이것이 당신의 문제 일까?

+0

감사합니다. 나는 미래의 사용자를 위해 질문에 대답을 추가했다. – SpaceBeers

+0

도움이 된 것을 기쁘게 생각합니다! 그래서 나는 이것을 D7에서 가져 왔습니다 : 이것은 이제 바뀌 었습니다 : D는 그것에 프로젝트를하기 위해 기다릴 수 없습니다! 더 이상의 질문은 외침을 준다! – coder4show

관련 문제