joe*_*e_h 5 php drupal drupal-6 drupal-modules
我正在使用drupal 6.16.以下hook_form_alter代码无效.我只是想在用户登录表单的提交按钮上将"登录"更改为"登录"
<?php
//$Id$
function helloworld_form_alter($form_id,&$form) {
switch ($form_id) {
case 'user_login_form':
// Change 'Log in' to 'Sign in'.
$form['submit']['#value'] = t('Sign in');
break;
}
}
Run Code Online (Sandbox Code Playgroud)
有任何解决这个问题的方法吗 ?
请帮忙.谢谢.
您的代码中有两个错误:
yourModuleName_form_alter(&$form, &$form_state, $form_id),因此在您的示例中,表单ID上的开关将永远不会触发.user_login_block 对于可用作块的小登录表单(通常在大多数页面上使用)user_login 用于显式登录页面(通常位于'user/login'下)两种形式的结构大多相同,因此您通常可以在同一hook_form_alter实现中更改两者- 只需添加另一个case语句来检查第二个版本.
我发现使用主题函数更改表单更容易 - 在主题的template.php中创建:
function YOURTHEMENAMEHERE_user_login_form($form) {
$form['submit']['#value'] = t('Sign in');
//dsm($form);
return drupal_render($form);
}
Run Code Online (Sandbox Code Playgroud)
注释掉的行(dsm)用于Drupal devel模块 - 我也建议安装它.一旦安装了此权限并设置了管理员角色的权限以便您可以使用它,您将获得一个新选项卡,该选项卡可以准确显示页面的构造方式以及哪些数组执行哪些操作.
按照阵列中的跟踪进行操作,您可以在网站上进行任何主题.
编辑 - 哦确定:P我注意到的一件事,就是之前没有使用过这个钩子,API中的例子在函数中有3个变量,但是你有2个!不匹配意味着您可能正在输入错误的变量:
function modulename_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'contact_mail_page':
$form['submit']['#value'] = t('Sign in');
break;
}
}
Run Code Online (Sandbox Code Playgroud)