编辑:
我认为这是因为动作是相同的或什么的。我尝试使用以下方法修改操作:
function mytheme_user_profile_form($form) {
global $user;
$uid = $user->uid;
//print '<pre>'; print_r($form); print '</pre>';
$category = $form['_category']['#value'];
switch($category) {
case 'account':
$form['#action'] = '/user/'.$uid.'/edit?destination=user/'.$uid;
break;
case 'education':
$form['#action'] = '/user/'.$uid.'/edit/education?destination=user/'.$uid;
break;
case 'experience':
$form['#action'] = '/user/'.$uid.'/edit/experience?destination=user/'.$uid;
break;
case 'publications':
$form['#action'] = '/user/'.$uid.'/edit/publications?destination=user/'.$uid;
break;
case 'conflicts':
$form['#action'] = '/user/'.$uid.'/edit/conflicts?destination=user/'.$uid;
break;
}
//print '<pre>'; print_r($form); print '</pre>';
//print $form['#action'];
$output .= drupal_render($form);
return $output;
}
但是,实际呈现表单时的表单操作是不变的。他们都是 /user/%uid
我可以修改表单操作吗?
我在一页上包含了用户配置文件表单的几个不同“类别”,并且代码将正确输出我指定的表单。每个表单都在一个单独的可折叠 div 中。
我的问题是双重的。
(1) 未预先填充字段的现有值,并且
(2) 点击一个部分的“保存”将导致警告:电子邮件字段是必填项,无论您实际保存的是哪种形式
我很确定对于问题 #2,这是因为按钮的名称在所有情况下都是相同的,表单 id 也是如此。
print '<h3>– Account Settings</h3>';
print '<div class="expand">';
print(drupal_get_form('user_profile_form', $user, 'account'));
print '</div>';
print '<h3>– My Info</h3>';
print '<div class="expand">';
print(drupal_get_form('user_profile_form', $user, 'Personal'));
print '</div>';
print '<h3>– Experience</h3>';
print '<div class="expand">';
print(drupal_get_form('user_profile_form', $user, 'experience'));
print '</div>';
print '<h3>– Education</h3>';
print '<div class="expand">';
print(drupal_get_form('user_profile_form', $user, 'education'));
print '</div>';