web-dev-qa-db-ja.com

フォームが追加/編集/削除フォームかどうかを確認するにはどうすればよいですか?

フォームがノードの作成、編集、または削除用かどうかを確認する必要があります。

現在、以下のスニペットを使用すると、フォームがノードの追加または編集用かどうかを確認できます。フォームがノードを削除するためのものかどうかを確認するにはどうすればよいですか?

    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

この答え で述べたものを少し変更して使用できます。

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

これを試して:

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

$form_idnode_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
    }
  }
}

詳細については、これを確認してください https://api.drupal.org/api/drupal/modules%21node%21node.api.php/function/hook_node_access/7.x

0
Naveen