編集:
行動が同じか何かだからだと思います。これを使用してアクションを変更しようとしました:
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です
フォームアクションを変更できますか?
1つのページにユーザープロファイルフォームのいくつかの異なる「カテゴリ」を含めています。コードは、指定したフォームを正しく出力します。各フォームは、個別の折りたたみ可能なdivにあります。
私の問題は2つあります。
(1)フィールドの既存の値は事前入力されておらず、
(2)1つのセクションで[保存]をクリックすると、警告が表示されます。実際に保存しているフォームに関係なく、[メール]フィールドが必要です。
問題#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>';