abstract class ConditionFormBase in Block Visibility Groups 8
Provides a base form for editing and adding a condition.
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\block_visibility_groups\Form\ConditionFormBase uses ConditionRedirectTrait, ContextAwarePluginAssignmentTrait
Expanded class hierarchy of ConditionFormBase
File
- src/
Form/ ConditionFormBase.php, line 18
Namespace
Drupal\block_visibility_groups\FormView source
abstract class ConditionFormBase extends FormBase {
use ContextAwarePluginAssignmentTrait;
use ConditionRedirectTrait;
/**
* The block_visibility_group entity this condition belongs to.
*
* @var \Drupal\block_visibility_groups\Entity\BlockVisibilityGroup
*/
protected $block_visibility_group;
/**
* The condition used by this form.
*
* @var \Drupal\Core\Condition\ConditionInterface
*/
protected $condition;
/**
* The context repository service.
*
* @var \Drupal\Core\Plugin\Context\ContextRepositoryInterface
*/
protected $contextRepository;
/**
* ConditionFormBase constructor.
*
* @param \Drupal\Core\Plugin\Context\ContextRepositoryInterface $contextRepository
*/
public function __construct(ContextRepositoryInterface $context_repository) {
$this->contextRepository = $context_repository;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container) {
return new static($container
->get('context.repository'));
}
/**
* Prepares the condition used by this form.
*
* @param string $condition_id
* Either a condition ID, or the plugin ID used to create a new
* condition.
*
* @return \Drupal\Core\Condition\ConditionInterface
* The condition object.
*/
protected abstract function prepareCondition($condition_id);
/**
* Returns the text to use for the submit button.
*
* @return string
* The submit button text.
*/
protected abstract function submitButtonText();
/**
* Returns the text to use for the submit message.
*
* @return string
* The submit message text.
*/
protected abstract function submitMessageText();
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state, BlockVisibilityGroupInterface $block_visibility_group = NULL, $condition_id = NULL, $redirect = NULL) {
$this->block_visibility_group = $block_visibility_group;
$this->condition = $this
->prepareCondition($condition_id);
$this
->setRedirectValue($form, $redirect);
// Store the gathered contexts in the form state for other objects to use
// during form building.
$form_state
->setTemporaryValue('gathered_contexts', $this->contextRepository
->getAvailableContexts());
// Allow the condition to add to the form.
$form['condition'] = $this->condition
->buildConfigurationForm([], $form_state);
$form['condition']['#tree'] = TRUE;
$form['actions'] = [
'#type' => 'actions',
];
$form['actions']['submit'] = [
'#type' => 'submit',
'#value' => $this
->submitButtonText(),
'#button_type' => 'primary',
];
return $form;
}
/**
* {@inheritdoc}
*/
public function validateForm(array &$form, FormStateInterface $form_state) {
// Allow the condition to validate the form.
$condition_values = (new FormState())
->setValues($form_state
->getValue('condition'));
$this->condition
->validateConfigurationForm($form, $condition_values);
// Update the original form values.
$form_state
->setValue('condition', $condition_values
->getValues());
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
// Allow the condition to submit the form.
$condition_values = (new FormState())
->setValues($form_state
->getValue('condition'));
$this->condition
->submitConfigurationForm($form, $condition_values);
// Update the original form values.
$form_state
->setValue('condition', $condition_values
->getValues());
if ($this->condition instanceof ContextAwarePluginInterface) {
$this->condition
->setContextMapping($condition_values
->getValue('context_mapping', []));
}
// Set the submission message.
$this
->messenger()
->addMessage($this
->submitMessageText());
$configuration = $this->condition
->getConfiguration();
// If this condition is new, add it to the block_visibility_group.
if (!isset($configuration['uuid'])) {
$this->block_visibility_group
->addCondition($configuration);
}
// Save the block_visibility_group entity.
$this->block_visibility_group
->save();
$this
->setConditionRedirect($form_state);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ConditionFormBase:: |
protected | property | The block_visibility_group entity this condition belongs to. | |
ConditionFormBase:: |
protected | property | The condition used by this form. | |
ConditionFormBase:: |
protected | property | The context repository service. | |
ConditionFormBase:: |
public | function |
Form constructor. Overrides FormInterface:: |
|
ConditionFormBase:: |
public static | function |
Instantiates a new instance of this class. Overrides FormBase:: |
1 |
ConditionFormBase:: |
abstract protected | function | Prepares the condition used by this form. | 2 |
ConditionFormBase:: |
abstract protected | function | Returns the text to use for the submit button. | 2 |
ConditionFormBase:: |
public | function |
Form submission handler. Overrides FormInterface:: |
|
ConditionFormBase:: |
abstract protected | function | Returns the text to use for the submit message. | 2 |
ConditionFormBase:: |
public | function |
Form validation handler. Overrides FormBase:: |
|
ConditionFormBase:: |
public | function | ConditionFormBase constructor. | 1 |
ConditionRedirectTrait:: |
protected | function | Ensure form redirects to the correct route. | |
ConditionRedirectTrait:: |
protected | function | Set value for redirect. | |
ContextAwarePluginAssignmentTrait:: |
protected | function | Builds a form element for assigning a context to a given slot. | |
ContextAwarePluginAssignmentTrait:: |
protected | function | Wraps the context handler. | |
ContextAwarePluginAssignmentTrait:: |
abstract protected | function | Ensures the t() method is available. | |
DependencySerializationTrait:: |
protected | property | An array of entity type IDs keyed by the property name of their storages. | |
DependencySerializationTrait:: |
protected | property | An array of service IDs keyed by property name used for serialization. | |
DependencySerializationTrait:: |
public | function | 1 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormBase:: |
protected | property | The config factory. | 1 |
FormBase:: |
protected | property | The request stack. | 1 |
FormBase:: |
protected | property | The route match. | |
FormBase:: |
protected | function | Retrieves a configuration object. | |
FormBase:: |
protected | function | Gets the config factory for this form. | 1 |
FormBase:: |
private | function | Returns the service container. | |
FormBase:: |
protected | function | Gets the current user. | |
FormBase:: |
protected | function | Gets the request object. | |
FormBase:: |
protected | function | Gets the route match. | |
FormBase:: |
protected | function | Gets the logger for a specific channel. | |
FormBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
FormBase:: |
public | function | Resets the configuration factory. | |
FormBase:: |
public | function | Sets the config factory for this form. | |
FormBase:: |
public | function | Sets the request stack object to use. | |
FormInterface:: |
public | function | Returns a unique string identifying the form. | 236 |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |