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;
1212 */
1313class EntityReferenceFieldItemList extends FieldItemList implements EntityReferenceFieldItemListInterface {
1414
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
1414 public static function dataFileAsserts (): iterable
1515 {
1616 yield from self ::gatherAssertTypes (__DIR__ . '/data/entity-reference-field-item-list.php ' );
17+ yield from self ::gatherAssertTypes (__DIR__ . '/data/bug-878.php ' );
1718 }
1819
1920 /**
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