Paragraf alanı değerleri nasıl alınır?


12

Drupal'da bir ürün listesi oluşturmak ve bunu bir web servisine göndermek istiyorum. Bunun için her ürün için paragraflar içeren bir varlık türü oluşturdum. Paragrafı nasıl yükleyebilir ve alanlarına nasıl erişebilirim? Şimdiye kadar yalnızca ürünün target_id ve target_revision_id değerlerini görüyorum. Teşekkürler!

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

Sonuç:

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

Yanıtlar:


14

Paragraf varlık sınıfını dahil edebilmeli ve Paragraph::load($entity_id)yüklemek için kullanabilirsiniz .

Misal:

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

Bunun eski olduğunu biliyorum, ama gelecek için yararlı olabilir. Bir Düğüm varlığı tarafından başvurulan varlıkları yüklemek için entityözelliği kullanabilirsiniz . Örneğin, aşağıdaki kodu göz önünde bulundurun:

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

Varlık id tarafından bir varlık yüklemenize gerek yok, sadece ->entityreferanslı varlık listesi üzerinden user özelliğini kullanmanız yeterlidir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.