我在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