Вам нужно сделать два шага:
Шаг первый: автоматически сгенерировать заголовок и скрытую форму. использовать hook_field_widget_form_alter () с кодом
function MY_MODULE_field_widget_form_alter(&$element, \Drupal\Core\Form\FormStateInterface $form_state, $context) {
$field_definition = $context['items']->getFieldDefinition();
$bundle = $form_state->getFormObject()->getEntity()->bundle();
// You can check with other bundle
if ($field_definition->getName() == 'title' && $bundle == 'page' && $element['value']['#default_value'] == '') {
$element['#required'] = FALSE;
//hidden title
$element['#type'] = 'hidden';
$element['value']['#required'] = FALSE;
// Set default value
$element['value']['#default_value'] = 'Default Title';
}
}
с первого шага вы можете отправить форму.
Шаг второй: переопределить новый заголовок значением по умолчанию. Используйте hook_node_insert ()
function MY_MODULE_node_insert(Drupal\node\NodeInterface $node) {
if ($node->bundle() == 'page') {
$new_title = 'New title ' . $node->id();
$node->setTitle($new_title);
$node->setNewRevision(FALSE);
$node->save();
}
}