尝试预填充一些表单字段,并使用hook_form_alter()。我尝试了几种不同的方法,但在这两种情况下,字段仍然是空的。我假设我需要设置default_value而不是值,因为如果用户更改了字段中的内容,我希望它能够正确更新。是吗?
以下是我一直在尝试的内容:
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'user_profile_form') {
if(arg(0) == 'user' && arg(1)) {
$user = user_load(arg(1));
$form['profile_company_site']= array('#default_value' => $user->profile_company_site);
$form['profile_blog_url']= array('#default_value' => $user->profile_blog_url);
$form['profile_my_website_url']= array('#default_value' => $user->profile_my_website_url);
$form['profile_first_name']= array('#default_value' => $user->profile_first_name);
$form['profile_last_name']= array('#default_value' => $user->profile_last_name);
}
}
}
我也是这样试过的:
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'user_profile_form') {
if(arg(0) == 'user' && arg(1)) {
$user = user_load(arg(1));
$form['profile_company_site'][#default_value'] = $user->profile_company_site);
$form['profile_blog_url'][#default_value'] = $user->profile_blog_url);
$form['profile_my_website_url']['#default_value'] = $user->profile_my_website_url);
$form['profile_first_name']['#default_value'] = $user->profile_first_name);
$form['profile_last_name']['#default_value'] = $user->profile_last_name);
}
}
}
答案 0 :(得分:3)
两者似乎都是正确的格式,但您的第一个将覆盖您为该字段设置的所有其他项目。所以你最好和第二个人一起吃点东西。
在第二个问题上,你错过了一对夫妇的单引号。
$form['profile_company_site']['#default_value'] = $user->profile_company_site);
你确定要进入循环吗?
答案 1 :(得分:1)
您缺少一个阵列级别。配置文件表单字段不在$ form数组的顶层,而是在由类别名称键入的子数组中。因此,如果您为字段指定了“示例类别”类别,则代码应如下所示:
function mymodule_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'user_profile_form') {
if(arg(0) == 'user' && arg(1)) {
$user = user_load(arg(1));
$form['example category']['profile_company_site']['#default_value'] = $user->profile_company_site);
$form['example category']['profile_blog_url']['#default_value'] = $user->profile_blog_url);
$form['example category']['profile_my_website_url']['#default_value'] = $user->profile_my_website_url);
$form['example category']['profile_first_name']['#default_value'] = $user->profile_first_name);
$form['example category']['profile_last_name']['#default_value'] = $user->profile_last_name);
}
}
}
您应该使用调试器(或至少var_dump()
)来检查您想要操作的表单数组 - 节省大量时间。