Bagaimana cara mendapatkan nilai-nilai bidang paragraf?

12

Saya ingin membuat daftar produk di drupal dan mengirimkannya di layanan web. Untuk ini saya membuat jenis entitas dengan paragraf untuk setiap produk. Bagaimana saya bisa memuat paragraf dan mengakses bidangnya? Sampai sekarang saya hanya melihat target_id dan target_revision_id produk. Terima kasih!

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

Hasil:

Array
(
  [target_id] => 1
  [target_revision_id] => 3
)
Jan F.
sumber

Jawaban:

13

Anda harus dapat menyertakan kelas entitas Paragraf, dan gunakan Paragraph::load($entity_id)untuk memuatnya.

Contoh:

use Drupal\paragraphs\Entity\Paragraph;

$paragraph = Paragraph::load($target_id);
$foo = $paragraph->field_name->value;
Kevin
sumber
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();
Martin Klima
sumber
9

Saya tahu ini sudah tua, tetapi mungkin bisa membantu untuk masa depan. Untuk memuat entitas yang dirujuk oleh entitas Node, Anda dapat menggunakan entityproperti. Sebagai contoh, pertimbangkan kode berikut:

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

Jadi tidak perlu memuat entitas dengan id entitas, Anda cukup menggunakan ->entityproperti pengguna dari daftar entitas yang direferensikan.

Claudiu Chirilov
sumber