次のコードは、ユーザーをnode/add/article
にリダイレクトしますが、オーバーレイを使用しません。
$form_state['redirect'] = 'node/add/article'
node/add/article
をオーバーレイモードで開くにはどうすればよいですか?
あなたはこれを試すことができます、
global $base_url;
$custom_url = (urldecode(url($base_url, array('query' => array('destination' => '#overlay=node/add/article')))));
$form_state['redirect'] = $custom_url;
これは実用的な解決策のようです:
フォーム内:
$form['somebutton']['#submit'] = array('your_custom_callback');
カスタムコールバックを追加する
function your_custom_callback($form, &$form_state) {
//redirect users to Drupal.org
$url = "http://drupal.org";
if (module_exists('overlay') && overlay_get_mode() == 'child') {
unset($_GET['destination']);
overlay_close_dialog($url, array('external' => TRUE));
$form_state['redirect'] = FALSE;
} else {
$form_state['redirect'] = $url;
}
}
上記のコードは私にとってはうまくいきませんでした-カスタムコールバックのoverlay句内に$ form_state ['rebuild'] = TRUE;を含める必要がありました。以下のコードは私のために働きます:-
// the URL of the view I want to redirect to...
$redirect_to = 'manager/dashboard';
if(!empty($redirect_to)) {
if (module_exists('overlay') && overlay_get_mode()=='child') {
$form_state['rebuild'] = TRUE;
unset($_GET['destination']);
overlay_close_dialog($redirect_to);
$form_state['redirect'] = FALSE;
}
else {
$form_state['redirect'] = $redirect_to;
}
}