Drupal 7 で「form_alter」フックを実装しています。タイプ「article」のノードを削除した後、Web を特定のノードにリダイレクトしたいと考えています。そうする適切な方法は次のようです。
function mymodule_form_alter(&$form, &$form_state, $form_id){
switch ($form_id){
case 'node_delete_confirm':
if($form['#node']->type == 'article'){
$form['actions']['submit']['#submit'][] = '_mymodule_redirect';
}
break;
}
}
function _mymodule_redirect($form, &$form_state){
$form_state['redirect'] = 'node/60';
}
このコードをモジュールに配置すると、ノードの削除を確認した後にリダイレクトされますが、ノードは実際には削除されません。ホームページにアクセスすると、ノードはまだ生きています!
コードを削除すると、ノードは期待どおりに削除され、Web ページは通常どおりフロントページにリダイレクトされます。
私は何を間違っていますか?
更新:リダイレクトハンドラーを追加する前に、次の行を書き込むリダイレクトアクションの前に「node_delete_confirm_submit」を強制しました:
$form['actions']['submit']['#submit'][] = 'node_delete_confirm_submit';
これで問題は解決します。