2016-05-13 17 views
0

Ich benutze das View Bulk Operation Modul, um ein mehrfaches Löschen auf meiner benutzerdefinierten Ansicht durchzuführen, wo ich meine Inhalte aufliste.Drupal 7 VBO's Hook form_alter löst nicht aus

Aber ich habe einen Wert zu überprüfen, um zu wissen, ob ich akzeptieren einen Inhalt zu löschen oder nicht ... Ich habe es geschafft, es mit der Mehrfachauswahl mit dem hook_form_alter() auf meinem /admin/content Blick zu tun, aber es funktioniert nicht Auslöser wenn ich dies tun auf meine benutzerdefinierte Ansicht ...

ich habe wie andere Haken versucht:

  • hook_views_bulk_operations_form_alter() was schön klang ... Aber es löst nicht bei allen
  • hook_node_delete() haben könnte gearbeitet, aber ich habe n o Vorstellung davon, wie Sie den Löschvorgang zu stoppen, wenn in der Funktion (exit; oder break; nur einen Fehler aus, und ich nicht, warum)

Mein Code des hook_form_later, die mit der ‚Content-Seite‘ funktionieren:

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) 
     } 
    } 
    } 
} 

Wie funktioniert hook_views_bulk_operations_form_alter() auslösen?

Antwort

0

Ich glaube nicht, VBO hat seine eigene Form ändern Haken, so hook_views_bulk_operations_form_alter() einfach nicht aufgerufen wird.

So wie ich habe durch die Verwendung hook_form_alter(), ähnlich wie Ihre Lösung ist es zu tun, aber mit einem Scheck auf der Formular-ID nur wirkt auf den VBO Formen in Ich bin interessiert.

Theoretisch könnte man fügen Sie einen alter hook auf VBO-Formularen hinzu, aber ich denke, es wäre langsamer als die Implementierung direkt in . Wenn Sie viele VBO-Formulare haben, um es zu ändern, könnte wert sein, aber.