1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
/** |
4
|
|
|
* @file |
5
|
|
|
* Contains \Drupal\entity_browser\Entity\Controllers\EntityBrowserListBuilder. |
6
|
|
|
*/ |
7
|
|
|
|
8
|
|
|
namespace Drupal\content_entity_example\Entity\Controller; |
9
|
|
|
|
10
|
|
|
use Drupal\Core\Entity\EntityInterface; |
11
|
|
|
use Drupal\Core\Entity\EntityListBuilder; |
12
|
|
|
|
13
|
|
|
|
14
|
|
|
/** |
15
|
|
|
* Provides a list controller for entity browser. |
16
|
|
|
* |
17
|
|
|
* @ingroup entity_browser |
18
|
|
|
*/ |
19
|
|
|
class EntityBrowserListBuilder extends EntityListBuilder { |
20
|
|
|
|
21
|
|
|
/** |
22
|
|
|
* {@inheritdoc} |
23
|
|
|
* |
24
|
|
|
* We override ::render() so that we can add our own content above the table. |
25
|
|
|
* parent::render() is where EntityListBuilder creates the table using our |
26
|
|
|
* buildHeader() and buildRow() implementations. |
27
|
|
|
*/ |
28
|
|
|
public function render() { |
29
|
|
|
$build['description'] = array( |
|
|
|
|
30
|
|
|
'#markup' => $this->t('Entity Browser'), |
31
|
|
|
); |
32
|
|
|
$build['table'] = parent::render(); |
33
|
|
|
return $build; |
34
|
|
|
} |
35
|
|
|
|
36
|
|
|
/** |
37
|
|
|
* {@inheritdoc} |
38
|
|
|
* |
39
|
|
|
* Building the header and content lines for the entity browser list. |
40
|
|
|
* |
41
|
|
|
* Calling the parent::buildHeader() adds a column for the possible actions |
42
|
|
|
* and inserts the 'edit' and 'delete' links as defined for the entity type. |
43
|
|
|
*/ |
44
|
|
|
public function buildHeader() { |
45
|
|
|
$header['id'] = $this->t('EB ID'); |
|
|
|
|
46
|
|
|
$header['name'] = $this->t('Name'); |
47
|
|
|
return $header + parent::buildHeader(); |
48
|
|
|
} |
49
|
|
|
|
50
|
|
|
/** |
51
|
|
|
* {@inheritdoc} |
52
|
|
|
*/ |
53
|
|
|
public function buildRow(EntityInterface $entity) { |
54
|
|
|
/* @var $entity \Drupal\entity_browser\Entity\EntityBrowser */ |
55
|
|
|
$row['id'] = $entity->id(); |
|
|
|
|
56
|
|
|
$row['name'] = $entity->link(); |
57
|
|
|
return $row + parent::buildRow($entity); |
58
|
|
|
} |
59
|
|
|
|
60
|
|
|
} |
61
|
|
|
|
Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.
Let’s take a look at an example:
As you can see in this example, the array
$myArray
is initialized the first time when the foreach loop is entered. You can also see that the value of thebar
key is only written conditionally; thus, its value might result from a previous iteration.This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.