trait EntityDeleteFormTrait
Same name in other branches
- 9 core/lib/Drupal/Core/Entity/EntityDeleteFormTrait.php \Drupal\Core\Entity\EntityDeleteFormTrait
- 8.9.x core/lib/Drupal/Core/Entity/EntityDeleteFormTrait.php \Drupal\Core\Entity\EntityDeleteFormTrait
- 11.x core/lib/Drupal/Core/Entity/EntityDeleteFormTrait.php \Drupal\Core\Entity\EntityDeleteFormTrait
Provides a trait for an entity deletion form.
This trait relies on the StringTranslationTrait and the logger method added by FormBase.
Hierarchy
- trait \Drupal\Core\Entity\EntityDeleteFormTrait uses \Drupal\Core\Config\Entity\ConfigDependencyDeleteFormTrait
Related topics
File
-
core/
lib/ Drupal/ Core/ Entity/ EntityDeleteFormTrait.php, line 17
Namespace
Drupal\Core\EntityView source
trait EntityDeleteFormTrait {
use ConfigDependencyDeleteFormTrait;
/**
* Gets the entity of this form.
*
* Provided by \Drupal\Core\Entity\EntityForm.
*
* @return \Drupal\Core\Entity\EntityInterface
* The entity.
*/
public abstract function getEntity();
/**
* Gets the logger for a specific channel.
*
* Provided by \Drupal\Core\Form\FormBase.
*
* @param string $channel
* The name of the channel.
*
* @return \Psr\Log\LoggerInterface
* The logger for this channel.
*/
protected abstract function logger($channel);
/**
* {@inheritdoc}
*/
public function getQuestion() {
return $this->t('Are you sure you want to delete the @entity-type %label?', [
'@entity-type' => $this->getEntity()
->getEntityType()
->getSingularLabel(),
'%label' => $this->getEntity()
->label() ?? $this->getEntity()
->id(),
]);
}
/**
* {@inheritdoc}
*/
public function getConfirmText() {
return $this->t('Delete');
}
/**
* Gets the message to display to the user after deleting the entity.
*
* @return string
* The translated string of the deletion message.
*/
protected function getDeletionMessage() {
$entity = $this->getEntity();
return $this->t('The @entity-type %label has been deleted.', [
'@entity-type' => $entity->getEntityType()
->getSingularLabel(),
'%label' => $entity->label() ?? $entity->id(),
]);
}
/**
* {@inheritdoc}
*/
public function getCancelUrl() {
$entity = $this->getEntity();
if ($entity->hasLinkTemplate('collection')) {
// If available, return the collection URL.
return $entity->toUrl('collection');
}
else {
// Otherwise fall back to the default link template.
return $entity->toUrl();
}
}
/**
* Returns the URL where the user should be redirected after deletion.
*
* @return \Drupal\Core\Url
* The redirect URL.
*/
protected function getRedirectUrl() {
$entity = $this->getEntity();
if ($entity->hasLinkTemplate('collection')) {
// If available, return the collection URL.
return $entity->toUrl('collection');
}
else {
// Otherwise fall back to the front page.
return Url::fromRoute('<front>');
}
}
/**
* Logs a message about the deleted entity.
*/
protected function logDeletionMessage() {
$entity = $this->getEntity();
$this->logger($entity->getEntityType()
->getProvider())
->info('The @entity-type %label has been deleted.', [
'@entity-type' => $entity->getEntityType()
->getSingularLabel(),
'%label' => $entity->label(),
]);
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
$this->getEntity()
->delete();
$this->messenger()
->addStatus($this->getDeletionMessage());
$form_state->setRedirectUrl($this->getCancelUrl());
$this->logDeletionMessage();
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overrides |
---|---|---|---|---|
ConfigDependencyDeleteFormTrait::addDependencyListsToForm | protected | function | Adds form elements to list affected configuration entities. | |
ConfigDependencyDeleteFormTrait::t | abstract protected | function | Translates a string to the current language or to a given language. | |
EntityDeleteFormTrait::getCancelUrl | public | function | 3 | |
EntityDeleteFormTrait::getConfirmText | public | function | 1 | |
EntityDeleteFormTrait::getDeletionMessage | protected | function | Gets the message to display to the user after deleting the entity. | 3 |
EntityDeleteFormTrait::getEntity | abstract public | function | Gets the entity of this form. | |
EntityDeleteFormTrait::getQuestion | public | function | 4 | |
EntityDeleteFormTrait::getRedirectUrl | protected | function | Returns the URL where the user should be redirected after deletion. | 4 |
EntityDeleteFormTrait::logDeletionMessage | protected | function | Logs a message about the deleted entity. | 2 |
EntityDeleteFormTrait::logger | abstract protected | function | Gets the logger for a specific channel. | |
EntityDeleteFormTrait::submitForm | public | function | 4 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.