DomainPathListBuilder.php in Domain Path 8
File
src/Controller/DomainPathListBuilder.php
View source
<?php
namespace Drupal\domain_path\Controller;
use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\Entity\EntityListBuilder;
use Drupal\Core\Entity\EntityStorageInterface;
use Drupal\Core\Form\FormBuilderInterface;
use Drupal\Core\Routing\UrlGeneratorInterface;
use Drupal\domain_path\Form\DomainPathFilterForm;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Request;
class DomainPathListBuilder extends EntityListBuilder {
protected $currentRequest;
protected $formBuilder;
protected $urlGenerator;
public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
return new static($entity_type, $container
->get('entity_type.manager')
->getStorage($entity_type
->id()), $container
->get('url_generator'), $container
->get('request_stack')
->getCurrentRequest(), $container
->get('form_builder'));
}
public function __construct(EntityTypeInterface $entity_type, EntityStorageInterface $storage, UrlGeneratorInterface $url_generator, Request $current_request, FormBuilderInterface $form_builder) {
parent::__construct($entity_type, $storage);
$this->urlGenerator = $url_generator;
$this->currentRequest = $current_request;
$this->formBuilder = $form_builder;
}
protected function getEntityIds() {
$query = $this
->getStorage()
->getQuery();
$search = $this->currentRequest->query
->get('search');
if ($search) {
$query
->condition('alias', $search, 'CONTAINS');
}
if ($this->limit) {
$query
->pager($this->limit);
}
$header = $this
->buildHeader();
$query
->tableSort($header);
return $query
->execute();
}
public function buildHeader() {
$header['id'] = $this
->t('Domain Path ID');
$header['language'] = $this
->t('Language');
$header['domain_id'] = $this
->t('Domain ID');
$header['source'] = $this
->t('Source');
$header['alias'] = $this
->t('Alias');
return $header + parent::buildHeader();
}
public function buildRow(EntityInterface $entity) {
$row['id'] = $entity
->id();
$row['language'] = $entity
->get('language')->value;
$row['domain_id'] = $entity
->get('domain_id')->target_id;
$row['source'] = $entity
->get('source')->value;
$row['alias'] = $entity
->get('alias')->value;
return $row + parent::buildRow($entity);
}
public function render() {
$keys = $this->currentRequest->query
->get('search');
$build['path_admin_filter_form'] = $this->formBuilder
->getForm(DomainPathFilterForm::class, $keys);
$build += parent::render();
return $build;
}
}