Same name and namespace in other branches
  1. 8.x-1.x src/Plugin/Field/FieldFormatter/EntityReferenceAjaxFormatter.php \Drupal\entity_reference_ajax_formatter\Plugin\Field\FieldFormatter\EntityReferenceAjaxFormatter::settingsForm() 1 comment

File

src/Plugin/Field/FieldFormatter/EntityReferenceAjaxFormatter.php, line 79

Class

EntityReferenceAjaxFormatter
Plugin implementation of the 'entity reference rendered entity' formatter.

Namespace

Drupal\entity_reference_ajax_formatter\Plugin\Field\FieldFormatter

Code

public function settingsForm(array $form, FormStateInterface $form_state) {
    $elements = parent::settingsForm($form, $form_state);
    $elements['number'] = [
        '#type' => 'number',
        '#title' => $this->t('Number of entities to load'),
        '#step' => 1,
        '#default_value' => $this->getSetting('number'),
        '#required' => TRUE,
    ];
    $elements['sort'] = [
        '#type' => 'select',
        '#title' => $this->t('Sort'),
        '#options' => [
            $this->t('Field Default Order'),
            $this->t('Random'),
            $this->t('Date Modified (ascending)'),
            $this->t('Date Modified (descending)'),
            $this->t('Date Created (ascending)'),
            $this->t('Date Created (descending)'),
        ],
        '#default_value' => $this->getSetting('sort'),
        '#required' => TRUE,
    ];
    $elements['load_more'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Load More'),
        '#default_value' => $this->getSetting('load_more'),
        '#description' => $this->t('Provide load more by AJAX functionality.'),
    ];
    $maxSetting = $this->getSetting('max');
    $elements['max'] = [
        '#type' => 'number',
        '#title' => $this->t('Max'),
        '#description' => $this->t('The maximum to load via load more. Select 0 for unlimited.'),
        '#default_value' => $maxSetting == 0 ? $maxSetting : max($maxSetting, $this->getSetting('number') + 1),
        '#states' => [
            'visible' => [
                ':input[name$="[load_more]"]' => [
                    'checked' => TRUE,
                ],
            ],
        ],
        '#element_validate' => [
            [
                $this,
                'settingsMaxValidate',
            ],
        ],
    ];
    return $elements;
}