DblogFilterForm.php

Same filename in other branches
  1. 9 core/modules/dblog/src/Form/DblogFilterForm.php
  2. 10 core/modules/dblog/src/Form/DblogFilterForm.php
  3. 11.x core/modules/dblog/src/Form/DblogFilterForm.php

Namespace

Drupal\dblog\Form

File

core/modules/dblog/src/Form/DblogFilterForm.php

View source
<?php

namespace Drupal\dblog\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Provides the database logging filter form.
 *
 * @internal
 */
class DblogFilterForm extends FormBase {
    
    /**
     * {@inheritdoc}
     */
    public function getFormId() {
        return 'dblog_filter_form';
    }
    
    /**
     * {@inheritdoc}
     */
    public function buildForm(array $form, FormStateInterface $form_state) {
        $filters = dblog_filters();
        $form['filters'] = [
            '#type' => 'details',
            '#title' => $this->t('Filter log messages'),
            '#open' => TRUE,
        ];
        foreach ($filters as $key => $filter) {
            $form['filters']['status'][$key] = [
                '#title' => $filter['title'],
                '#type' => 'select',
                '#multiple' => TRUE,
                '#size' => 8,
                '#options' => $filter['options'],
            ];
            if (!empty($_SESSION['dblog_overview_filter'][$key])) {
                $form['filters']['status'][$key]['#default_value'] = $_SESSION['dblog_overview_filter'][$key];
            }
        }
        $form['filters']['actions'] = [
            '#type' => 'actions',
            '#attributes' => [
                'class' => [
                    'container-inline',
                ],
            ],
        ];
        $form['filters']['actions']['submit'] = [
            '#type' => 'submit',
            '#value' => $this->t('Filter'),
        ];
        if (!empty($_SESSION['dblog_overview_filter'])) {
            $form['filters']['actions']['reset'] = [
                '#type' => 'submit',
                '#value' => $this->t('Reset'),
                '#limit_validation_errors' => [],
                '#submit' => [
                    '::resetForm',
                ],
            ];
        }
        return $form;
    }
    
    /**
     * {@inheritdoc}
     */
    public function validateForm(array &$form, FormStateInterface $form_state) {
        if ($form_state->isValueEmpty('type') && $form_state->isValueEmpty('severity')) {
            $form_state->setErrorByName('type', $this->t('You must select something to filter by.'));
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function submitForm(array &$form, FormStateInterface $form_state) {
        $filters = dblog_filters();
        foreach ($filters as $name => $filter) {
            if ($form_state->hasValue($name)) {
                $_SESSION['dblog_overview_filter'][$name] = $form_state->getValue($name);
            }
        }
    }
    
    /**
     * Resets the filter form.
     *
     * @param array $form
     *   An associative array containing the structure of the form.
     * @param \Drupal\Core\Form\FormStateInterface $form_state
     *   The current state of the form.
     */
    public function resetForm(array &$form, FormStateInterface $form_state) {
        $_SESSION['dblog_overview_filter'] = [];
    }

}

Classes

Title Deprecated Summary
DblogFilterForm Provides the database logging filter form.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.