it-swarm.com.de

Wie erhalte ich Absatzfeldwerte?

Ich möchte eine Produktliste in drupal] erstellen und in einem Webservice senden. Dazu habe ich für jedes Produkt einen Entitätstyp mit Absätzen erstellt. Wie kann ich den Absatz laden und auf seine Felder zugreifen? Bis jetzt sehe ich nur die target_id und target_revision_id des Produkts. Danke!

$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
)
12
Jan F.

Sie sollten in der Lage sein, die Entitätsklasse Paragraph einzuschließen und sie mit Paragraph::load($entity_id) zu laden.

Beispiel:

use Drupal\paragraphs\Entity\Paragraph;

$paragraph = Paragraph::load($target_id);
$foo = $paragraph->field_name->value;
14
Kevin
$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();
10
Martin Klíma

Ich weiß, dass dies alt ist, aber für die Zukunft hilfreich sein könnte. Zum Laden von Entitäten, auf die von einer Entität Node Entität] verwiesen wird, können Sie die Eigenschaft entity verwenden. 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;
}

Sie müssen also keine Entität anhand der Entitäts-ID laden. Sie müssen lediglich die Eigenschaft ->entity Über eine Liste von Entitäten referenzieren.

9