단락 필드 값을 얻는 방법?


12

drupal에서 제품 목록을 만들고 웹 서비스로 보내려고합니다. 이를 위해 각 제품에 대해 단락이있는 엔티티 유형을 작성했습니다. 단락을로드하고 해당 필드에 액세스하려면 어떻게해야합니까? 지금까지는 제품의 target_id 및 target_revision_id 만 보입니다. 감사!

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

결과:

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

답변:


13

단락 엔티티 클래스를 포함하고 Paragraph::load($entity_id)로드하는 데 사용할 수 있어야 합니다.

예:

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

나는 이것이 오래되었지만 미래에 도움이 될 수 있음을 알고 있습니다. 노드 엔티티가 참조하는 엔티티를로드하려면이 entity특성을 사용할 수 있습니다 . 예를 들어 다음 코드를 고려하십시오.

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

따라서 엔터티 ID별로 엔터티를로드 할 필요가 없으며 ->entity참조 된 엔터티 목록에 대한 사용자 속성 만 있으면 됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.