С использованием крючок_form_alter()
, вы можете добавить обработчик отправки, который устанавливает перенаправление. Код обработчика отправки будет похож на следующий.
функция mymodule_node_edit_submit (массив и $ форма, FormStateInterface $ form_state) {
$node = $form_state->getFormObject()->getEntity();
$id = \Drupal::request()->query->get('id');
$form_state->setRedirect('entity.node.canonical', ['node' => $node->id()], [query => ['id' => $id]]);
}
Код для hook_form_BASE_FORM_ID_alter()
будет просто следующим.
функция mymodule_form_node_form_alter(&$form, FormStateInterface $form_state) {
$node = $form_state->getFormObject()->getEntity();
// Поскольку этот хук вызывается для каждого узла, проверьте его тип содержимого.
if ($node->getType() == 'интересующий вас тип контента') {
$form['actions']['submit']['#submit'][] = 'mymodule_node_edit_submit';
}
}
hook_form_FORM_ID_alter()
реализация должна называться mymodule_form_node_<content_type_machine_name>_alter()
. (Заменять моймодуль с именем машины модуля, <content_type_machine_name>
с именем машины типа контента.) В этом случае, поскольку хук вызывается только для типа контента, ему не нужно проверять тип контента узла перед добавлением обработчика отправки.