我正在尝试主题化我的Drupal网站的用户个人资料表单。我在主题的template.php文件中使用了hook_form_alter。
代码与我用于编辑其他表单的代码相同但由于某种原因我无法发现它无效。
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已被主题名称取代。
解答:
正如我建议的那样,我查看了$ form数组。
echo '<pre>';
print_r($form);
echo '</pre>';
看到current_pass在帐户数组中并将代码修改为以下内容,这样可以正常工作。
$form['account']['current_pass']['#size'] = '500';
希望这可以帮助别人。
答案 0 :(得分:2)
我只是要说同样的事情 - 做一个$ form的转储,并确保该字段实际存在 - 如果它确实存在但它仍然不起作用那么可能会有另一个挂钩在你的后面调用并更改你的变化。
ps:我还在使用D6但您确定将form_alter功能放在正确的位置吗?你说THEME_NAME_form_alter - 我知道在D6中你必须把它们放在模块层而不是主题层(除非在D7中有所改变???) - 这可能是你的问题吗?