ノードを別のページに追加した後にユーザーをリダイレクトできますが、リンク元の前のページにリダイレクトしたいと思います。今、私は次のコードを使用します:
function user_add_node_form_foto_node_form_alter(&$form, &$form_state, $form_id) {
$form['actions']['submit']['#submit'][] = 'user_add_node_foto_node_form_submit';
}
function user_add_node_foto_node_form_submit($form, &$form_state) {
$form_state['redirect'] = 'node/add/foto';
}
フォームの送信後にユーザーを前のページにリダイレクトするようにコードを変更するにはどうすればよいですか?
[〜#〜] edit [〜#〜]:すべてのfotoノードタイプには、ノード参照フィールド「field_relate_to_gallery」があります。これを使用して、ビューにギャラリーを作成し、ノードフォームを追加するためのリンクをギャラリーページに追加します。ノード「写真」を追加した後、ユーザーをギャラリーに戻したいのですが。つまり、IDが異なる多数のギャラリーがあり、このフォームを特定の1つのギャラリーにのみリダイレクトすることはできません。
私の解決策誰かが興味を持っている場合。urlモジュールからのノード参照を使用してそれを行いました。これで、ユーザーはギャラリーページから画像を追加でき(ノードフォームを追加するためのリンクがあります)、送信後、ギャラリーページに戻ります。
drupal_get_destination()
が必要です。この関数は、フォームの送信後にユーザーを元のページにリダイレクトする l()
での使用に適した「宛先」クエリパラメータを作成します。したがって、新しいノードを追加するリンクを作成するときは、l()
とともにdrupal_get_destination()
関数を使用します。例えば...
l('Add new foto', 'path/to/add/a/foto', array('query' => drupal_get_destination()))
それでうまくいくはずです。
2つの可能性があります。
一部のブラウザーは$ _SERVER ['HTTP_REFERER']を設定せず、ユーザーがページを直接参照した場合、リファラーヘッダーは存在しないことに注意してください。そのため、戻るリンクを表示しない、デフォルトのスタートページなどにリンクするなど、フォールバックを設定してください。
(以前のURLをどこかに保存(変数、セッション、静的変数など)し、送信関数でそれをリダイレクトする方法について、これがあなたに理解をもたらすことを願っています。
function user_add_node_form_foto_node_form_alter(&$form, &$form_state, $form_id) {
global $user;
variable_set('perUrl'.$user->uid,$_SERVER['HTTP_REFERER']);
$form['actions']['submit']['#submit'][] = 'user_add_node_foto_node_form_submit';
}
function user_add_node_foto_node_form_submit($form, &$form_state) {
global $user;
$form_state['rebuild'] = TRUE;
$form_state['redirect'] = variable_get('perUrl'.$user->uid);
}