Come ottenere i valori dei campi di paragrafo?


12

Vorrei creare un elenco di prodotti in drupal e inviarlo in un servizio web. Per questo ho creato un tipo di entità con paragrafi per ciascun prodotto. Come posso caricare il paragrafo e accedere ai suoi campi? Fino ad ora vedo solo target_id e target_revision_id del prodotto. Grazie!

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

Risultato:

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

Risposte:


13

Dovresti essere in grado di includere la classe di entità paragrafo e utilizzarla Paragraph::load($entity_id)per caricarla.

Esempio:

use Drupal\paragraphs\Entity\Paragraph;

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

10
$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

So che questo è vecchio, ma potrebbe essere utile per il futuro. Per caricare entità a cui fa riferimento un'entità Nodo è possibile utilizzare la entityproprietà Ad esempio, considera il seguente codice:

$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;
}

Quindi non è necessario caricare un'entità dall'ID entità, basta semplicemente la ->entityproprietà dell'utente su un elenco di entità referenziato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.