File tree Expand file tree Collapse file tree 3 files changed +51
-1
lines changed Expand file tree Collapse file tree 3 files changed +51
-1
lines changed Original file line number Diff line number Diff line change @@ -12,4 +12,9 @@ use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem;
12
12
*/
13
13
class EntityReferenceFieldItemList extends FieldItemList implements EntityReferenceFieldItemListInterface {
14
14
15
- }
15
+ /**
16
+ * @return array<int, T>
17
+ */
18
+ public function referencedEntities();
19
+
20
+ }
Original file line number Diff line number Diff line change @@ -14,6 +14,7 @@ final class EntityReferenceFieldItemListGenericTest extends TypeInferenceTestCas
14
14
public static function dataFileAsserts (): iterable
15
15
{
16
16
yield from self ::gatherAssertTypes (__DIR__ . '/data/entity-reference-field-item-list.php ' );
17
+ yield from self ::gatherAssertTypes (__DIR__ . '/data/bug-878.php ' );
17
18
}
18
19
19
20
/**
Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace Bug878 ;
4
+
5
+ use Drupal \Core \Field \EntityReferenceFieldItemList ;
6
+ use Drupal \Core \Field \EntityReferenceFieldItemListInterface ;
7
+ use Drupal \node \Entity \Node ;
8
+ use function PHPStan \Testing \assertType ;
9
+
10
+ class EntityReferenceRevisionsFieldItemList extends EntityReferenceFieldItemList implements EntityReferenceFieldItemListInterface {
11
+
12
+ /**
13
+ * {@inheritdoc}
14
+ */
15
+ public function referencedEntities () {
16
+ $ target_entities = [];
17
+ foreach ($ this ->list as $ delta => $ item ) {
18
+ if ($ item ->entity ) {
19
+ $ target_entities [$ delta ] = $ item ->entity ;
20
+ }
21
+ }
22
+ return $ target_entities ;
23
+ }
24
+
25
+
26
+ }
27
+
28
+ $ paragraphFields = [];
29
+
30
+ $ node = Node::load (1 );
31
+ assert ($ node instanceof Node);
32
+
33
+ foreach ($ node as $ field ) {
34
+ if ($ field instanceof EntityReferenceRevisionsFieldItemList) {
35
+ $ paragraphFields [] = $ field ;
36
+ }
37
+ }
38
+
39
+ foreach ($ paragraphFields as $ field ) {
40
+ foreach ($ field ->referencedEntities () as $ entity ) {
41
+ assertType ('Drupal\Core\Entity\EntityInterface ' , $ entity );
42
+ assertType ('int|string|null ' , $ entity ->id ());
43
+ }
44
+ }
You can’t perform that action at this time.
0 commit comments