我在Drupal 7中實現'form_alter'鉤子。我想在刪除節點類型'文章'後將網絡重定向到特定節點。 看來,這樣做的正確方法是:節點刪除後的重定向不會刪除節點
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';
}
當我把這個代碼我的模塊中它並確認節點刪除後重定向,但該節點實際上並未刪除,如果我去的主頁它仍然活着!
如果我刪除代碼,則按預期方式刪除該節點,並將網頁像往常一樣重定向到首頁。
我在做什麼錯?
更新:我被迫重定向操作前的「node_delete_confirm_submit」加入我的重定向處理之前寫下面一行:
$form['actions']['submit']['#submit'][] = 'node_delete_confirm_submit';
這解決了問題。
我會給規則一個機會。你知道任何例子嗎(使用Rules Api來做類似的事情)?我不介意使用任何模塊作爲我的模塊的依賴項,但我不想從管理界面設置它。我仍然困惑爲什麼我的代碼不工作。 – user2708473
我終於找到了一個簡單的解決方案。我添加了$ form ['actions'] ['submit'] ['#submit'] [] ='node_delete_confirm_submit';在添加重定向回調之前。感謝EJK提出的建議,我會在其他情況下考慮這一點。 – user2708473