Рейтинг:0

Clarify difference between hook_form_TYPE_alter and hook_form_TYPE_EDIT_alter

флаг ng

I have a site with a lot of hook form alters for node forms and I'm finding that I have to create two separate hook functions to affect both the node create and node edit forms.

For example, I have to put both:

module_events_form_node_event_form_alter()

and

module_events_form_node_event_edit_form_alter()

With the same functionality in both functions so that it covers both new and edited nodes. Is there a way to have one hook_form_alter() to cover both form conditions?

Рейтинг:2
флаг cn

Вы можете использовать либо полный идентификатор формы с типом контента и операцией, либо базовый идентификатор формы. node_form. Это без операции, но также отсутствует тип контента. Поэтому, когда вы изменяете базовую форму, вам нужно проверять определенный тип контента, если вы не хотите изменять все формы узлов:

/**
 * Реализует hook_form_BASE_FORM_ID_alter().
 */
функция mymodule_form_node_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  $node = $form_state->getFormObject()->getEntity();
  если ($node->getType() == 'событие') {
    // изменить форму узла для события типа контента и любой операции
  }
}
quantumized avatar
флаг ng
Чтобы уточнить, если я использую идентификатор формы с типом контента, то я должен использовать две функции для учета как новых, так и редактирующих форм, но если я просто использую hook_form_alter и проверяю тип, тогда я этого не делаю, верно?
4uk4 avatar
флаг cn
FORM_ID содержит как тип содержимого, так и операцию (создание по умолчанию, а значение по умолчанию опущено). BASE_FORM_ID, который я предложил, не содержит ни одного из них, и вы можете проверить их по отдельности. Кстати, если вам нужна операция, используйте `$form_state->getFormObject()->getOperation()`.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.