Wie erhält man Absatzfeldwerte?


12

Ich möchte eine Produktliste in Drupal erstellen und sie in einem Webservice senden. Zu diesem Zweck habe ich für jedes Produkt einen Entitätstyp mit Absätzen erstellt. Wie kann ich den Absatz laden und auf seine Felder zugreifen? Bisher sehe ich nur die target_id und target_revision_id des Produkts. Vielen Dank!

$nodestorage = \Drupal::entityManager()->getStorage('node');
$productslist = $nodestorage->loadUnchanged(9)->toArray();
foreach($productslist['field_products'] as $prod) {
  debug($prod);
}

Ergebnis:

Array
(
  [target_id] => 1
  [target_revision_id] => 3
)

Antworten:


13

Sie sollten in der Lage sein, die Paragraph-Entitätsklasse einzuschließen und Paragraph::load($entity_id)zum Laden zu verwenden.

Beispiel:

use Drupal\paragraphs\Entity\Paragraph;

$paragraph = Paragraph::load($target_id);
$foo = $paragraph->field_name->value;

9
$paragraph = Paragraph::load($target_id);
// Paragraph type could be also useful.
$prgTypeId = $paragraph->getType();
/** @var \Drupal\Core\Field\EntityReferenceFieldItemList $prgMediaField */
$prgMediaField = $paragraph->get('field_media');
$prgMediaFieldValue = $prgMediaField->getValue();

9

Ich weiß, dass dies alt ist, aber für die Zukunft hilfreich sein könnte. Mit der entityEigenschaft können Sie Entitäten laden, auf die von einer Knotenentität verwiesen wird . Betrachten Sie beispielsweise den folgenden Code:

$nodestorage = \Drupal::entityManager()->getStorage('node');
$node = $nodestorage->loadUnchanged(9);

foreach ($node->field_products as $product) {

  /** @var Entity (i.e. Node, Paragraph, Term) $referenced_product **/
  $referenced_product = $product->entity;

  // Use now the entity to get the values you need.
  $field_value = $referenced_product->field_name->value;
}

Es ist also nicht erforderlich, eine Entität anhand der Entitäts-ID zu laden. Sie müssen lediglich die Benutzereigenschaft ->entityüber eine referenzierte Liste von Entitäten legen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.