RobotListBuilder.php

Same filename in other branches
  1. 4.0.x modules/config_entity_example/src/Controller/RobotListBuilder.php

Namespace

Drupal\config_entity_example\Controller

File

modules/config_entity_example/src/Controller/RobotListBuilder.php

View source
<?php

namespace Drupal\config_entity_example\Controller;

use Drupal\Core\Config\Entity\ConfigEntityListBuilder;
use Drupal\Core\Entity\EntityInterface;
use Drupal\examples\Utility\DescriptionTemplateTrait;

/**
 * Provides a listing of robot entities.
 *
 * List Controllers provide a list of entities in a tabular form. The base
 * class provides most of the rendering logic for us. The key functions
 * we need to override are buildHeader() and buildRow(). These control what
 * columns are displayed in the table, and how each row is displayed
 * respectively.
 *
 * Drupal locates the list controller by looking for the "list" entry under
 * "controllers" in our entity type's annotation. We define the path on which
 * the list may be accessed in our module's *.routing.yml file. The key entry
 * to look for is "_entity_list". In *.routing.yml, "_entity_list" specifies
 * an entity type ID. When a user navigates to the URL for that router item,
 * Drupal loads the annotation for that entity type. It looks for the "list"
 * entry under "controllers" for the class to load.
 *
 * @ingroup config_entity_example
 */
class RobotListBuilder extends ConfigEntityListBuilder {
    use DescriptionTemplateTrait;
    
    /**
     * {@inheritdoc}
     */
    protected function getModuleName() {
        return 'config_entity_example';
    }
    
    /**
     * Builds the header row for the entity listing.
     *
     * @return array
     *   A render array structure of header strings.
     *
     * @see \Drupal\Core\Entity\EntityListController::render()
     */
    public function buildHeader() {
        $header['label'] = $this->t('Robot');
        $header['machine_name'] = $this->t('Machine Name');
        $header['floopy'] = $this->t('Floopy');
        return $header + parent::buildHeader();
    }
    
    /**
     * Builds a row for an entity in the entity listing.
     *
     * @param \Drupal\Core\Entity\EntityInterface $entity
     *   The entity for which to build the row.
     *
     * @return array
     *   A render array of the table row for displaying the entity.
     *
     * @see \Drupal\Core\Entity\EntityListController::render()
     */
    public function buildRow(EntityInterface $entity) {
        $row['label'] = $entity->label();
        $row['machine_name'] = $entity->id();
        $row['floopy'] = $entity->floopy;
        return $row + parent::buildRow($entity);
    }
    
    /**
     * Adds some descriptive text to our entity list.
     *
     * Typically, there's no need to override render(). You may wish to do so,
     * however, if you want to add markup before or after the table.
     *
     * @return array
     *   Renderable array.
     */
    public function render() {
        $build = $this->description();
        $build[] = parent::render();
        return $build;
    }

}

Classes

Title Deprecated Summary
RobotListBuilder Provides a listing of robot entities.