class IntervalsForm in Subscriptions 2.0.x
Defines the intervals settings form.
Hierarchy
- class \Drupal\Core\Form\FormBase implements ContainerInjectionInterface, FormInterface uses DependencySerializationTrait, LoggerChannelTrait, MessengerTrait, RedirectDestinationTrait, StringTranslationTrait
- class \Drupal\Core\Form\ConfigFormBase uses ConfigFormBaseTrait
- class \Drupal\subscriptions\Form\IntervalsForm
- class \Drupal\Core\Form\ConfigFormBase uses ConfigFormBaseTrait
Expanded class hierarchy of IntervalsForm
1 string reference to 'IntervalsForm'
File
- src/
Form/ IntervalsForm.php, line 11
Namespace
Drupal\subscriptions\FormView source
class IntervalsForm extends ConfigFormBase {
/**
* {@inheritdoc}
*/
public function getFormId() {
return 'subscriptions_intervals';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$config = $this
->config('subscriptions.settings');
$form['intervals'] = [
'#type' => 'textarea',
'#title' => $this
->t('Intervals'),
'#description' => $this
->t('Each interval is defined by a single line in the format
<em>seconds|label</em>. Adding a new interval is simple, but removing an
interval that is already in use is not recommended.'),
'#placeholder' => "1|As soon as possible\n900|Every 15 minutes",
'#default_value' => $config
->get('intervals'),
'#element_validate' => [
[
$this,
'validateIntervals',
],
],
];
return parent::buildForm($form, $form_state);
}
/**
* Element validation callback.
*/
public function validateIntervals($element, FormStateInterface $form_state, $form) {
// Get the form value.
$intervals = explode("\n", $form_state
->cleanValues()
->getValue('intervals', ''));
$intervals = array_filter($intervals);
// Regex for matching seconds|label values.
$pattern = '/^([0-9]+)\\|(.+)$/';
$errors = [];
// Check each line individually.
foreach ($intervals as &$interval) {
// Trim whitespace off of each line.
$interval = trim($interval);
if (empty($interval)) {
continue;
}
$match = preg_match($pattern, $interval);
// If the line did not match the regex, add it as an error.
if ($match != TRUE) {
$errors[] = $interval;
}
}
// If any errors built up, set an error message.
if (!empty($errors)) {
$error_message = $this
->formatPlural(count($errors), 'Invalid format: @interval', 'Invalid formats: @interval', [
'@interval' => implode(', ', $errors),
]);
$form_state
->setError($element, $error_message);
}
// Clean up the final value and set it back in the form state.
$intervals = array_values(array_filter($intervals));
$form_state
->setValueForElement($element, implode("\n", $intervals));
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
parent::submitForm($form, $form_state);
// Set values from the form.
$form_state
->cleanValues();
$config = $this
->config('subscriptions.settings');
$config
->set('intervals', $form_state
->getValue('intervals', []));
$config
->save();
}
/**
* {@inheritdoc}
*/
protected function getEditableConfigNames() {
return [
'subscriptions.settings',
];
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ConfigFormBase:: |
public static | function |
Instantiates a new instance of this class. Overrides FormBase:: |
18 |
ConfigFormBase:: |
public | function | Constructs a \Drupal\system\ConfigFormBase object. | 16 |
ConfigFormBaseTrait:: |
protected | function | Retrieves a configuration object. | |
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | 2 | |
DependencySerializationTrait:: |
public | function | 2 | |
FormBase:: |
protected | property | The config factory. | 3 |
FormBase:: |
protected | property | The request stack. | 1 |
FormBase:: |
protected | property | The route match. | |
FormBase:: |
protected | function | Gets the config factory for this form. | 3 |
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. | |
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. | |
FormBase:: |
public | function |
Form validation handler. Overrides FormInterface:: |
72 |
IntervalsForm:: |
public | function |
Form constructor. Overrides ConfigFormBase:: |
|
IntervalsForm:: |
protected | function |
Gets the configuration names that will be editable. Overrides ConfigFormBaseTrait:: |
|
IntervalsForm:: |
public | function |
Returns a unique string identifying the form. Overrides FormInterface:: |
|
IntervalsForm:: |
public | function |
Form submission handler. Overrides ConfigFormBase:: |
|
IntervalsForm:: |
public | function | Element validation callback. | |
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. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
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. | 4 |
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 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |