我使用View Bulk Operation模块在我的自定义视图中执行多次删除,其中列出了我的内容。
但我必须检查一个值才能知道我是否接受删除内容......
我已使用/admin/content
在我的hook_form_alter()
视图中进行了多项选择,并且在我的自定义视图中执行此操作时无法触发...
我尝试过其他类似的钩子:
hook_views_bulk_operations_form_alter()
听起来不错......但它并没有触发hook_node_delete()
本来可以有效但我不知道如何在函数中停止删除过程(exit;
或break;
只是抛出一个错误而我没有得到为什么)我的hook_form_later代码可以正常使用'内容页面' :
function MODULE-NAME_form_alter(&$form, &$form_state, $form_id) {
foreach($form['nodes'] as $pnode)
{
if(is_array($pnode))
{
if(!isDeletable($pnode['#value'])) // my function which says if we can delete the content
{
$n = node_load($pnode['#value']);
$status = isset($n->workbench_moderation['current']->state) ? $n->workbench_moderation['current']->state : false;
$string = "This content won't be deleted : ".substr($pnode['#suffix'],0,-6); // substr to cut off the '</li>' !
drupal_set_message(t($string), 'warning');
unset($form['nodes'][''.$pnode['#value']]); // get the content off the form ( my way to say that the content shouldn't be deleted )
}
}
}
}
hook_views_bulk_operations_form_alter()
如何触发?
答案 0 :(得分:0)
我不认为VBO有自己的形式alter hook,所以hook_views_bulk_operations_form_alter()
根本就没有被调用。
我一直在做的方法是使用hook_form_alter()
,类似于你的解决方案,但检查表单ID只对我感兴趣的VBO表单起作用。
理论上你可以在VBO表单上添加一个alter hook,但我认为它比直接在hook_form_alter()
中实现要慢。如果您有很多VBO表单要修改它,那么可能值得。