You are here

FacetSourceController.php in Facets 8

File

src/Controller/FacetSourceController.php
View source
<?php

namespace Drupal\facets\Controller;

use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Entity\EntityForm;
use Drupal\facets\FacetSourceInterface;
use Drupal\facets\Form\FacetSourceEditForm;

/**
 * Provides route responses for facet source configuration.
 */
class FacetSourceController extends ControllerBase {

  /**
   * Configuration for the facet source.
   *
   * @param string $facets_facet_source
   *   The plugin id.
   *
   * @return array
   *   A renderable array containing the form.
   */
  public function facetSourceConfigForm($facets_facet_source) {

    // Returns the render array of the FacetSourceConfigForm.
    $form_object = $this
      ->entityTypeManager()
      ->getFormObject('facets_facet_source', 'edit');
    assert($form_object instanceof EntityForm);
    $facet_source_storage = $this
      ->entityTypeManager()
      ->getStorage('facets_facet_source');
    $source_id = str_replace(':', '__', $facets_facet_source);
    $facet_source = $facet_source_storage
      ->load($source_id);
    if (!$facet_source instanceof FacetSourceInterface) {
      $facet_source = $facet_source_storage
        ->create([
        'id' => $source_id,
        'name' => $facets_facet_source,
      ]);
      $facet_source
        ->save();
    }
    $form_object
      ->setEntity($facet_source);
    return $this
      ->formBuilder()
      ->getForm($form_object);
  }

}

Classes

Namesort descending Description
FacetSourceController Provides route responses for facet source configuration.