function NodeTypeForm::save
Same name in other branches
- 9 core/modules/node/src/NodeTypeForm.php \Drupal\node\NodeTypeForm::save()
- 10 core/modules/node/src/NodeTypeForm.php \Drupal\node\NodeTypeForm::save()
- 11.x core/modules/node/src/NodeTypeForm.php \Drupal\node\NodeTypeForm::save()
Overrides EntityForm::save
File
-
core/
modules/ node/ src/ NodeTypeForm.php, line 225
Class
- NodeTypeForm
- Form handler for node type forms.
Namespace
Drupal\nodeCode
public function save(array $form, FormStateInterface $form_state) {
$type = $this->entity;
$type->setNewRevision($form_state->getValue([
'options',
'revision',
]));
$type->set('type', trim($type->id()));
$type->set('name', trim($type->label()));
$status = $type->save();
$t_args = [
'%name' => $type->label(),
];
if ($status == SAVED_UPDATED) {
$this->messenger()
->addStatus($this->t('The content type %name has been updated.', $t_args));
}
elseif ($status == SAVED_NEW) {
node_add_body_field($type);
$this->messenger()
->addStatus($this->t('The content type %name has been added.', $t_args));
$context = array_merge($t_args, [
'link' => $type->toLink($this->t('View'), 'collection')
->toString(),
]);
$this->logger('node')
->notice('Added content type %name.', $context);
}
$fields = $this->entityFieldManager
->getFieldDefinitions('node', $type->id());
// Update title field definition.
$title_field = $fields['title'];
$title_label = $form_state->getValue('title_label');
if ($title_field->getLabel() != $title_label) {
$title_field->getConfig($type->id())
->setLabel($title_label)
->save();
}
// Update workflow options.
// @todo Make it possible to get default values without an entity.
// https://www.drupal.org/node/2318187
$node = $this->entityTypeManager
->getStorage('node')
->create([
'type' => $type->id(),
]);
foreach ([
'status',
'promote',
'sticky',
] as $field_name) {
$value = (bool) $form_state->getValue([
'options',
$field_name,
]);
if ($node->{$field_name}->value != $value) {
$fields[$field_name]->getConfig($type->id())
->setDefaultValue($value)
->save();
}
}
$this->entityFieldManager
->clearCachedFieldDefinitions();
$form_state->setRedirectUrl($type->toUrl('collection'));
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.