RobotListBuilder.php
3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
/**
* @file
* Contains Drupal\config_entity_example\Controller\RobotListBuilder.
*/
namespace Drupal\config_entity_example\Controller;
use Drupal\Core\Config\Entity\ConfigEntityListBuilder;
use Drupal\Core\Entity\EntityInterface;
/**
* 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.
*
* @package Drupal\config_entity_example\Controller
*
* @ingroup config_entity_example
*/
class RobotListBuilder extends ConfigEntityListBuilder {
/**
* 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 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['description'] = array(
'#markup' => $this->t("<p>The Config Entity Example module defines a"
. " Robot entity type. This is a list of the Robot entities currently"
. " in your Drupal site.</p><p>By default, when you enable this"
. " module, one entity is created from configuration. This is why we"
. " call them Config Entities. Marvin, the paranoid android, is created"
. " in the database when the module is enabled.</p><p>You can view a"
. " list of Robots here. You can also use the 'Operations' column to"
. " edit and delete Robots.</p>"),
);
$build[] = parent::render();
return $build;
}
}