Как обнаружить в форме узла друпал, если его редактировать или добавить форму? - PullRequest
1 голос
/ 15 апреля 2011

Есть ли способ определить, является ли просматриваемая форма узла формой "изменить" или "добавить новый узел"?

Ответы [ 4 ]

4 голосов
/ 15 апреля 2011

Определить где? В hook_alter? В шаблоне? Где-то еще?

В общем, подход будет заключаться в том, чтобы получить объект $ node и посмотреть, установлено ли его поле nid. Если это так, это редактирование.

2 голосов
/ 17 апреля 2011

Также вы можете использовать URL, если вы не хотите загружать весь объект узла.Когда это добавление нового узла, тогда в URL arg (0) будет «node», arg (1) будет «add», arg (2) будет «content_type_name», тогда как в случае просмотра узла arg (0)) будет узлом, а arg (1) будет nid (т.е. числовым).Это просто альтернативный способ обнаружения.

1 голос
/ 16 января 2015

проверьте эти ответы с drupal.stackexchange.com

, например:

function mymodule_form_node_form_alter(&$form, &$form_state) {
  $node = $form_state['node'];

  if (!isset($node->nid) || isset($node->is_new)) {
    // This is a new node.
  }
  else {
    // This is not a new node.
  }
}

или используйте функцию arg (), как было указано ранее.

0 голосов
/ 15 апреля 2011
if ($node->is_new) {do_something_for_new_node();}
...