class BundleEntityDeleteForm
Same name and namespace in other branches
- 11.x core/lib/Drupal/Core/Entity/Form/BundleEntityDeleteForm.php \Drupal\Core\Entity\Form\BundleEntityDeleteForm
A generic entity delete form for entities which are bundles.
Hierarchy
- class \Drupal\Core\Form\FormBase implements \Drupal\Core\Form\FormInterface, \Drupal\Core\DependencyInjection\ContainerInjectionInterface uses \Drupal\Core\DependencyInjection\AutowireTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Htmx\HtmxRequestInfoTrait, \Drupal\Core\Logger\LoggerChannelTrait, \Drupal\Core\Messenger\MessengerTrait, \Drupal\Core\Routing\RedirectDestinationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait
- class \Drupal\Core\Entity\EntityForm implements \Drupal\Core\Entity\EntityFormInterface extends \Drupal\Core\Form\FormBase
- class \Drupal\Core\Entity\EntityConfirmFormBase implements \Drupal\Core\Form\ConfirmFormInterface extends \Drupal\Core\Entity\EntityForm
- class \Drupal\Core\Entity\EntityDeleteForm uses \Drupal\Core\Entity\EntityDeleteFormTrait extends \Drupal\Core\Entity\EntityConfirmFormBase
- class \Drupal\Core\Entity\Form\BundleEntityDeleteForm extends \Drupal\Core\Entity\EntityDeleteForm
- class \Drupal\Core\Entity\EntityDeleteForm uses \Drupal\Core\Entity\EntityDeleteFormTrait extends \Drupal\Core\Entity\EntityConfirmFormBase
- class \Drupal\Core\Entity\EntityConfirmFormBase implements \Drupal\Core\Form\ConfirmFormInterface extends \Drupal\Core\Entity\EntityForm
- class \Drupal\Core\Entity\EntityForm implements \Drupal\Core\Entity\EntityFormInterface extends \Drupal\Core\Form\FormBase
Expanded class hierarchy of BundleEntityDeleteForm
Related topics
6 files declare their use of BundleEntityDeleteForm
- BlockContentType.php in core/
modules/ block_content/ src/ Entity/ BlockContentType.php - BundleDeleteFormTest.php in core/
tests/ Drupal/ KernelTests/ Core/ Entity/ BundleDeleteFormTest.php - CommentTypeDeleteForm.php in core/
modules/ comment/ src/ Form/ CommentTypeDeleteForm.php - EntityTestBundle.php in core/
modules/ system/ tests/ modules/ entity_test/ src/ Entity/ EntityTestBundle.php - MediaType.php in core/
modules/ media/ src/ Entity/ MediaType.php
File
-
core/
lib/ Drupal/ Core/ Entity/ Form/ BundleEntityDeleteForm.php, line 15
Namespace
Drupal\Core\Entity\FormView source
class BundleEntityDeleteForm extends EntityDeleteForm {
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$bundle_entity_type = $this->entity
->getEntityType();
$content_entity_type_id = $bundle_entity_type->getBundleOf();
if ($content_entity_type_id === NULL) {
throw new \LogicException(sprintf('Entity type %s uses BundleEntityDeleteForm but is not a bundle entity type.', $this->entity
->getEntityTypeId()));
}
$content_entity_type = $this->entityTypeManager
->getDefinition($content_entity_type_id);
$prevent_deletion = FALSE;
$num_content_entities = $this->getContentEntityCount();
if ($num_content_entities > 0) {
$prevent_deletion = TRUE;
$form['existing_entities'] = [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $this->formatPlural($num_content_entities, '%type is used by 1 @singular-content-label on your site. You may not remove this @bundle-label until you have removed all of the %type @plural-content-label.', '%type is used by @count @plural-content-label on your site. You may not remove this @bundle-label until you have removed all of the %type @plural-content-label.', [
'%type' => $this->entity
->label(),
'@bundle-label' => $bundle_entity_type->getSingularLabel(),
'@singular-content-label' => $content_entity_type->getSingularLabel(),
'@plural-content-label' => $content_entity_type->getPluralLabel(),
]),
];
}
$additional_reasons = $this->getAdditionalReasonsToPreventDeletion();
if (count($additional_reasons) > 0) {
$prevent_deletion = TRUE;
foreach ($additional_reasons as $reason) {
$form['additional_reasons'][] = [
'#type' => 'html_tag',
'#tag' => 'p',
'#value' => $reason,
];
}
}
// If we are blocking deletion, don't show the delete button or the config
// changes that the parent class adds.
if ($prevent_deletion) {
// Change the title, as the user can't delete.
$form['#title'] = $this->t("Unable to delete @bundle-label %type", [
'%type' => $this->entity
->label(),
'@bundle-label' => $bundle_entity_type->getSingularLabel(),
]);
// Retrieve and add the form actions array but without the submit button.
// We need to show the cancel button for non-JS users showing the form
// on a standalone page instead of a modal.
$actions = $this->actionsElement($form, $form_state);
unset($actions['submit']);
if (!empty($actions)) {
$form['actions'] = $actions;
}
return $form;
}
return parent::buildForm($form, $form_state);
}
/**
* Gets the count of content entities of this form's bundle.
*
* This is handled separately from additional reasons to make it easier for
* entity types to customize.
*
* @return int
* The number of entities.
*/
protected function getContentEntityCount() : int {
$bundle_entity_type = $this->entity
->getEntityType();
$content_entity_type_id = $bundle_entity_type->getBundleOf();
$content_entity_type = $this->entityTypeManager
->getDefinition($content_entity_type_id);
$num_content_entities = $this->entityTypeManager
->getStorage($content_entity_type_id)
->getQuery()
->accessCheck(FALSE)
->condition($content_entity_type->getKey('bundle'), $this->entity
->id())
->count()
->execute();
return $num_content_entities;
}
/**
* Gets a list of additional reasons preventing deletion of the bundle entity.
*
* @return \Drupal\Core\StringTranslation\TranslatableMarkup[]
* An array of translated strings, each one giving a separate reason for
* preventing deletion. These are shown each in a paragraph on the form. If
* the array is empty, and there are no content entities, then deletion is
* allowed.
*/
protected function getAdditionalReasonsToPreventDeletion() : array {
return [];
}
}
Members
| Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
|---|---|---|---|---|---|
| AutowiredInstanceTrait::createInstanceAutowired | public static | function | Instantiates a new instance of the implementing class using autowiring. | ||
| AutowiredInstanceTrait::getAutowireArguments | private static | function | Resolves arguments for a method using autowiring. | ||
| AutowireTrait::create | public static | function | Instantiates a new instance of the implementing class using autowiring. | 126 | |
| BundleEntityDeleteForm::buildForm | public | function | Form constructor. | Overrides EntityDeleteForm::buildForm | |
| BundleEntityDeleteForm::getAdditionalReasonsToPreventDeletion | protected | function | Gets a list of additional reasons preventing deletion of the bundle entity. | 1 | |
| BundleEntityDeleteForm::getContentEntityCount | protected | function | Gets the count of content entities of this form's bundle. | ||
| 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. | ||
| DependencySerializationTrait::$_entityStorages | protected | property | An array of entity type IDs keyed by the property name of their storages. | ||
| DependencySerializationTrait::$_serviceIds | protected | property | An array of service IDs keyed by property name used for serialization. | ||
| DependencySerializationTrait::__sleep | public | function | 2 | ||
| DependencySerializationTrait::__wakeup | public | function | 2 | ||
| EntityConfirmFormBase::actions | protected | function | Returns an array of supported actions for the current entity form. | Overrides EntityForm::actions | 1 |
| EntityConfirmFormBase::delete | public | function | The delete() method is not used in EntityConfirmFormBase. This overrides the default implementation that redirects to the delete-form confirmation form. |
||
| EntityConfirmFormBase::getBaseFormId | public | function | Returns a string identifying the base form. | Overrides EntityForm::getBaseFormId | |
| EntityConfirmFormBase::getCancelText | public | function | Returns a caption for the link which cancels the action. | Overrides ConfirmFormInterface::getCancelText | |
| EntityConfirmFormBase::getDescription | public | function | Returns additional text to display as a description. | Overrides ConfirmFormInterface::getDescription | 12 |
| EntityConfirmFormBase::getFormName | public | function | Returns the internal name used to refer to the confirmation item. | Overrides ConfirmFormInterface::getFormName | |
| EntityConfirmFormBase::save | public | function | The save() method is not used in EntityConfirmFormBase. This overrides the default implementation that saves the entity. |
Overrides EntityForm::save | |
| EntityDeleteForm::getConfigManager | protected | function | Gets the configuration manager. | ||
| EntityDeleteForm::getConfigNamesToDelete | protected | function | Returns config names to delete for the deletion confirmation form. | 1 | |
| EntityDeleteFormTrait::getCancelUrl | public | function | 2 | ||
| 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 | ||
| EntityForm::$entity | protected | property | The entity being used by this form. | 10 | |
| EntityForm::$entityTypeManager | protected | property | The entity type manager. | 3 | |
| EntityForm::$moduleHandler | protected | property | The module handler service. | 3 | |
| EntityForm::$operation | protected | property | The name of the current operation. | ||
| EntityForm::actionsElement | protected | function | Returns the action form element for the current entity form. | ||
| EntityForm::afterBuild | public | function | Form element #after_build callback: Updates the entity with submitted data. | 1 | |
| EntityForm::buildEntity | public | function | Builds an updated entity object based upon the submitted form values. | Overrides EntityFormInterface::buildEntity | 5 |
| EntityForm::copyFormValuesToEntity | protected | function | Copies top-level form values to entity properties. | 12 | |
| EntityForm::form | public | function | Gets the actual form array to be built. | 35 | |
| EntityForm::getCallableFromDefinition | protected | function | Gets a callable from a string or array definition if possible. | ||
| EntityForm::getEntityFromRouteMatch | public | function | Determines which entity will be used by this form from a RouteMatch object. | Overrides EntityFormInterface::getEntityFromRouteMatch | 3 |
| EntityForm::getFormId | public | function | Returns a unique string identifying the form. | Overrides FormInterface::getFormId | 14 |
| EntityForm::getOperation | public | function | Gets the operation identifying the form. | Overrides EntityFormInterface::getOperation | |
| EntityForm::init | protected | function | Initialize the form state and the entity before the first form build. | 3 | |
| EntityForm::prepareEntity | protected | function | Prepares the entity object before the form is built first. | 3 | |
| EntityForm::prepareInvokeAll | protected | function | Invokes the specified prepare hook variant. | ||
| EntityForm::processForm | public | function | Process callback: assigns weights and hides extra fields. | ||
| EntityForm::setEntity | public | function | Sets the form entity. | Overrides EntityFormInterface::setEntity | |
| EntityForm::setEntityTypeManager | public | function | Sets the entity type manager for this form. | Overrides EntityFormInterface::setEntityTypeManager | |
| EntityForm::setModuleHandler | public | function | Sets the module handler for this form. | Overrides EntityFormInterface::setModuleHandler | |
| EntityForm::setOperation | public | function | Sets the operation for this form. | Overrides EntityFormInterface::setOperation | |
| FormBase::$configFactory | protected | property | The config factory. | 1 | |
| FormBase::$requestStack | protected | property | The request stack. | 1 | |
| FormBase::$routeMatch | protected | property | The route match. | ||
| FormBase::config | protected | function | Retrieves a configuration object. | ||
| FormBase::configFactory | protected | function | Gets the config factory for this form. | 1 | |
| FormBase::container | private | function | Returns the service container. | ||
| FormBase::currentUser | protected | function | Gets the current user. | 2 | |
| FormBase::getRequest | protected | function | Gets the request object. | Overrides HtmxRequestInfoTrait::getRequest | |
| FormBase::getRouteMatch | protected | function | Gets the route match. | ||
| FormBase::redirect | protected | function | Returns a redirect response object for the specified route. | ||
| FormBase::resetConfigFactory | public | function | Resets the configuration factory. | ||
| FormBase::setConfigFactory | public | function | Sets the config factory for this form. | ||
| FormBase::setRequestStack | public | function | Sets the request stack object to use. | ||
| FormBase::validateForm | public | function | Form validation handler. | Overrides FormInterface::validateForm | 54 |
| HtmxRequestInfoTrait::getHtmxCurrentUrl | protected | function | Retrieves the URL of the requesting page from an HTMX request header. | ||
| HtmxRequestInfoTrait::getHtmxRequestType | protected | function | Retrieves the request type from an HTMX request header. | ||
| HtmxRequestInfoTrait::getHtmxSource | protected | function | Retrieves the trigger identifier from an HTMX request header. | ||
| HtmxRequestInfoTrait::getHtmxTarget | protected | function | Retrieves the target identifier from an HTMX request header. | ||
| HtmxRequestInfoTrait::getHtmxTriggerName | protected | function | Extracts the trigger name from the HX-Source header. | ||
| HtmxRequestInfoTrait::isHtmxBoosted | protected | function | Determines if the request is boosted by HTMX. | ||
| HtmxRequestInfoTrait::isHtmxHistoryRestoration | protected | function | Determines if if the request is for history restoration. | ||
| HtmxRequestInfoTrait::isHtmxRequest | protected | function | Determines if the request is sent by HTMX. | ||
| LoggerChannelTrait::$loggerFactory | protected | property | The logger channel factory service. | ||
| LoggerChannelTrait::getLogger | protected | function | Gets the logger for a specific channel. | ||
| LoggerChannelTrait::setLoggerFactory | public | function | Injects the logger channel factory. | ||
| MessengerTrait::$messenger | protected | property | The messenger. | 27 | |
| MessengerTrait::messenger | public | function | Gets the messenger. | 27 | |
| MessengerTrait::setMessenger | public | function | Sets the messenger. | ||
| RedirectDestinationTrait::$redirectDestination | protected | property | The redirect destination service. | 2 | |
| RedirectDestinationTrait::getDestinationArray | protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | ||
| RedirectDestinationTrait::getRedirectDestination | protected | function | Returns the redirect destination service. | ||
| RedirectDestinationTrait::setRedirectDestination | public | function | Sets the redirect destination service. | ||
| StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | |
| StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | ||
| StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | ||
| StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | ||
| StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.