class InputRequired
Same name in other branches
- 8.9.x core/modules/views/src/Plugin/views/exposed_form/InputRequired.php \Drupal\views\Plugin\views\exposed_form\InputRequired
- 10 core/modules/views/src/Plugin/views/exposed_form/InputRequired.php \Drupal\views\Plugin\views\exposed_form\InputRequired
- 11.x core/modules/views/src/Plugin/views/exposed_form/InputRequired.php \Drupal\views\Plugin\views\exposed_form\InputRequired
Exposed form plugin that provides an exposed form with required input.
Plugin annotation
@ViewsExposedForm(
id = "input_required",
title = @Translation("Input required"),
help = @Translation("An exposed form that only renders a view if the form contains user input.")
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements \Drupal\Component\Plugin\PluginInspectionInterface, \Drupal\Component\Plugin\DerivativeInspectionInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
- class \Drupal\views\Plugin\views\PluginBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\views\Plugin\views\ViewsPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface, \Drupal\Core\Security\TrustedCallbackInterface
- class \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase extends \Drupal\views\Plugin\views\PluginBase implements \Drupal\Core\Cache\CacheableDependencyInterface, \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginInterface
- class \Drupal\views\Plugin\views\exposed_form\InputRequired extends \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase
- class \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginBase extends \Drupal\views\Plugin\views\PluginBase implements \Drupal\Core\Cache\CacheableDependencyInterface, \Drupal\views\Plugin\views\exposed_form\ExposedFormPluginInterface
- class \Drupal\views\Plugin\views\PluginBase extends \Drupal\Core\Plugin\PluginBase implements \Drupal\Core\Plugin\ContainerFactoryPluginInterface, \Drupal\views\Plugin\views\ViewsPluginInterface, \Drupal\Component\Plugin\DependentPluginInterface, \Drupal\Core\Security\TrustedCallbackInterface
- class \Drupal\Core\Plugin\PluginBase extends \Drupal\Component\Plugin\PluginBase uses \Drupal\Core\StringTranslation\StringTranslationTrait, \Drupal\Core\DependencyInjection\DependencySerializationTrait, \Drupal\Core\Messenger\MessengerTrait
Expanded class hierarchy of InputRequired
Related topics
File
-
core/
modules/ views/ src/ Plugin/ views/ exposed_form/ InputRequired.php, line 19
Namespace
Drupal\views\Plugin\views\exposed_formView source
class InputRequired extends ExposedFormPluginBase {
protected function defineOptions() {
$options = parent::defineOptions();
$options['text_input_required'] = [
'default' => $this->t('Select any filter and click on Apply to see results'),
];
$options['text_input_required_format'] = [
'default' => NULL,
];
return $options;
}
public function buildOptionsForm(&$form, FormStateInterface $form_state) {
parent::buildOptionsForm($form, $form_state);
$form['text_input_required'] = [
'#type' => 'text_format',
'#title' => $this->t('Text on demand'),
'#description' => $this->t('Text to display instead of results until the user selects and applies an exposed filter.'),
'#default_value' => $this->options['text_input_required'],
'#format' => $this->options['text_input_required_format'] ?? filter_default_format(),
'#editor' => FALSE,
];
}
public function submitOptionsForm(&$form, FormStateInterface $form_state) {
$exposed_form_options = $form_state->getValue('exposed_form_options');
$form_state->setValue([
'exposed_form_options',
'text_input_required_format',
], $exposed_form_options['text_input_required']['format']);
$form_state->setValue([
'exposed_form_options',
'text_input_required',
], $exposed_form_options['text_input_required']['value']);
parent::submitOptionsForm($form, $form_state);
}
protected function exposedFilterApplied() {
static $cache = NULL;
if (!isset($cache)) {
$view = $this->view;
if (is_array($view->filter) && count($view->filter)) {
foreach ($view->filter as $filter) {
if ($filter->isExposed()) {
$identifier = $filter->options['expose']['identifier'];
if (isset($view->getExposedInput()[$identifier])) {
$cache = TRUE;
return $cache;
}
}
}
}
$cache = FALSE;
}
return $cache;
}
public function preRender($values) {
// Display the "text on demand" if needed. This is a site builder-defined
// text to display instead of results until the user selects and applies
// an exposed filter.
if (!$this->exposedFilterApplied()) {
$options = [
'id' => 'area',
'table' => 'views',
'field' => 'area',
'label' => '',
'relationship' => 'none',
'group_type' => 'group',
// We need to set the "Display even if view has no result" option to
// TRUE as the input required exposed form plugin will always force an
// empty result if no exposed filters are applied.
'empty' => TRUE,
'content' => [
// @see \Drupal\views\Plugin\views\area\Text::render()
'value' => $this->options['text_input_required'],
'format' => $this->options['text_input_required_format'],
],
];
$handler = Views::handlerManager('area')->getHandler($options);
$handler->init($this->view, $this->displayHandler, $options);
$this->displayHandler->handlers['empty'] = [
'area' => $handler,
];
// Override the existing empty result message (if applicable).
$this->displayHandler
->setOption('empty', [
'text' => $options,
]);
}
}
public function query() {
if (!$this->exposedFilterApplied()) {
// We return with no query; this will force the empty text.
$this->view->built = TRUE;
$this->view->executed = TRUE;
$this->view->result = [];
}
else {
parent::query();
}
}
}
Members
Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
---|---|---|---|---|---|
DerivativeInspectionInterface::getBaseId | public | function | Gets the base_plugin_id of the plugin instance. | 1 | |
DerivativeInspectionInterface::getDerivativeId | public | function | Gets the derivative_id of the plugin instance. | 1 | |
ExposedFormPluginBase::$usesOptions | protected | property | Denotes whether the plugin has an additional options form. | Overrides PluginBase::$usesOptions | |
ExposedFormPluginBase::exposedFormAlter | public | function | Alters the exposed form. | Overrides ExposedFormPluginInterface::exposedFormAlter | |
ExposedFormPluginBase::exposedFormSubmit | public | function | Submits the exposed form. | Overrides ExposedFormPluginInterface::exposedFormSubmit | |
ExposedFormPluginBase::exposedFormValidate | public | function | Validates the exposed form submission. | Overrides ExposedFormPluginInterface::exposedFormValidate | |
ExposedFormPluginBase::getCacheContexts | public | function | The cache contexts associated with this object. | Overrides CacheableDependencyInterface::getCacheContexts | |
ExposedFormPluginBase::getCacheMaxAge | public | function | The maximum age for which this object may be cached. | Overrides CacheableDependencyInterface::getCacheMaxAge | |
ExposedFormPluginBase::getCacheTags | public | function | The cache tags associated with this object. | Overrides CacheableDependencyInterface::getCacheTags | |
ExposedFormPluginBase::postExecute | public | function | Runs after the view has been executed. | Overrides ExposedFormPluginInterface::postExecute | |
ExposedFormPluginBase::postRender | public | function | Runs after the view has been rendered. | Overrides ExposedFormPluginInterface::postRender | |
ExposedFormPluginBase::preExecute | public | function | Runs before the view has been executed. | Overrides ExposedFormPluginInterface::preExecute | |
ExposedFormPluginBase::renderExposedForm | public | function | Renders the exposed form. | Overrides ExposedFormPluginInterface::renderExposedForm | |
ExposedFormPluginBase::resetForm | public | function | Resets all the states of the exposed form. | ||
InputRequired::buildOptionsForm | public | function | Provide a form to edit options for this plugin. | Overrides ExposedFormPluginBase::buildOptionsForm | |
InputRequired::defineOptions | protected | function | Information about options for all kinds of purposes will be held here. | Overrides ExposedFormPluginBase::defineOptions | |
InputRequired::exposedFilterApplied | protected | function | |||
InputRequired::preRender | public | function | Runs before the view is rendered. | Overrides ExposedFormPluginBase::preRender | |
InputRequired::query | public | function | Add anything to the query that we might need to. | Overrides ExposedFormPluginBase::query | |
InputRequired::submitOptionsForm | public | function | Handle any special handling on the validate form. | Overrides PluginBase::submitOptionsForm | |
PluginBase::$definition | public | property | Plugins' definition. | ||
PluginBase::$displayHandler | public | property | The display object this plugin is for. | ||
PluginBase::$options | public | property | Options for this plugin will be held here. | ||
PluginBase::$renderer | protected | property | Stores the render API renderer. | 3 | |
PluginBase::$view | public | property | The top object of a view. | 1 | |
PluginBase::calculateDependencies | public | function | Calculates dependencies for the configured plugin. | Overrides DependentPluginInterface::calculateDependencies | 14 |
PluginBase::create | public static | function | Creates an instance of the plugin. | Overrides ContainerFactoryPluginInterface::create | 63 |
PluginBase::destroy | public | function | Clears a plugin. | Overrides ViewsPluginInterface::destroy | 2 |
PluginBase::doFilterByDefinedOptions | protected | function | Do the work to filter out stored options depending on the defined options. | ||
PluginBase::filterByDefinedOptions | public | function | Filter out stored options depending on the defined options. | Overrides ViewsPluginInterface::filterByDefinedOptions | |
PluginBase::getAvailableGlobalTokens | public | function | Returns an array of available token replacements. | Overrides ViewsPluginInterface::getAvailableGlobalTokens | |
PluginBase::getProvider | public | function | Returns the plugin provider. | Overrides ViewsPluginInterface::getProvider | |
PluginBase::getRenderer | protected | function | Returns the render API renderer. | 1 | |
PluginBase::globalTokenForm | public | function | Adds elements for available core tokens to a form. | Overrides ViewsPluginInterface::globalTokenForm | |
PluginBase::globalTokenReplace | public | function | Returns a string with any core tokens replaced. | Overrides ViewsPluginInterface::globalTokenReplace | |
PluginBase::INCLUDE_ENTITY | constant | Include entity row languages when listing languages. | |||
PluginBase::INCLUDE_NEGOTIATED | constant | Include negotiated languages when listing languages. | |||
PluginBase::init | public | function | Initialize the plugin. | Overrides ViewsPluginInterface::init | 6 |
PluginBase::listLanguages | protected | function | Makes an array of languages, optionally including special languages. | ||
PluginBase::pluginTitle | public | function | Return the human readable name of the display. | Overrides ViewsPluginInterface::pluginTitle | |
PluginBase::preRenderAddFieldsetMarkup | public static | function | Moves form elements into fieldsets for presentation purposes. | Overrides ViewsPluginInterface::preRenderAddFieldsetMarkup | |
PluginBase::preRenderFlattenData | public static | function | Flattens the structure of form elements. | Overrides ViewsPluginInterface::preRenderFlattenData | |
PluginBase::queryLanguageSubstitutions | public static | function | Returns substitutions for Views queries for languages. | ||
PluginBase::setOptionDefaults | protected | function | Fills up the options of the plugin with defaults. | ||
PluginBase::summaryTitle | public | function | Returns the summary of the settings in the display. | Overrides ViewsPluginInterface::summaryTitle | 6 |
PluginBase::themeFunctions | public | function | Provide a full list of possible theme templates used by this style. | Overrides ViewsPluginInterface::themeFunctions | 1 |
PluginBase::trustedCallbacks | public static | function | Lists the trusted callbacks provided by the implementing class. | Overrides TrustedCallbackInterface::trustedCallbacks | 6 |
PluginBase::unpackOptions | public | function | Unpacks options over our existing defaults. | Overrides ViewsPluginInterface::unpackOptions | |
PluginBase::usesOptions | public | function | Returns the usesOptions property. | Overrides ViewsPluginInterface::usesOptions | 8 |
PluginBase::validate | public | function | Validate that the plugin is correct and can be saved. | Overrides ViewsPluginInterface::validate | 6 |
PluginBase::validateOptionsForm | public | function | Validate the options form. | Overrides ViewsPluginInterface::validateOptionsForm | 15 |
PluginBase::viewsTokenReplace | protected | function | Replaces Views' tokens in a given string. | 1 | |
PluginBase::VIEWS_QUERY_LANGUAGE_SITE_DEFAULT | constant | Query string to indicate the site default language. | |||
PluginBase::__construct | public | function | Constructs a PluginBase object. | 19 | |
PluginInspectionInterface::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | 6 | |
PluginInspectionInterface::getPluginId | public | function | Gets the plugin_id of the plugin instance. | 2 | |
TrustedCallbackInterface::THROW_EXCEPTION | constant | Untrusted callbacks throw exceptions. | |||
TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION | constant | Untrusted callbacks trigger silenced E_USER_DEPRECATION errors. | |||
TrustedCallbackInterface::TRIGGER_WARNING | constant | Untrusted callbacks trigger E_USER_WARNING errors. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.