web-dev-qa-db-fra.com

Comment vérifier si le formulaire est un formulaire d'ajout / modification / suppression?

J'ai besoin de vérifier si le formulaire sert à créer, modifier ou supprimer un nœud.

Actuellement, l'extrait ci-dessous me permet de vérifier si le formulaire est pour ajouter ou modifier un nœud. Comment vérifier si le formulaire est destiné à supprimer un nœud?

    if (!isset($node->nid) || isset($node->is_new)) {
      // The form is for creating a new node. 
    }
    else {
      // The form is for editing the node. 
    }
4
p21

Vous pouvez utiliser ce qui est dit dans cette réponse , avec une légère modification.

function example_form_alter(&$form, &$form_state, $form_id) {
  if (strpos(request_path(), '/add') !== FALSE) {
    $page = 'add';
  }
  elseif (strpos(request_path(), '/edit') !== FALSE) {
    $page = 'edit';
  }
  else if (strpos(request_path(), '/delete') !== FALSE) {
    $page = 'edit';
  }
}
1
argiepiano

Essaye ça:

function example_form_alter(&$form, &$form_state, $form_id) {
  if (strpos($form['#action'], '/add/') !== FALSE) {
      $page = 'add';
   }
  if (strpos($form['#action'], '/edit') !== FALSE) {
      $page = 'edit';
  }
  if (strpos($form['#action'], '/delete') !== FALSE) {
      $page = 'edit';
  }
}
0
Ajay Reddy

Vérifiez si le $form_id est node_delete_confirm

if ($form_id == 'node_delete_confirm') {
  // delete form
}
else if (isset($node->is_new)) {
  // add form
}
else {
  // edit form
}
0
Jimmy Ko
function hook_node_access($node, $op, $account) {
  $type = is_string($node) ? $node : $node->type;

  if (in_array($type, node_permissions_get_configured_types())) {
    if ($op == 'create') {
      //do somthing
    }

    if ($op == 'update') {
     //do somthing
    }
    if ($op == 'delete') {
    //do somthing
    }
  }
}

vérifiez cela pour plus d'informations https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_node_access/7.x

0
Naveen