Làm thế nào để có được giá trị trường đoạn?


12

Tôi muốn tạo một danh sách sản phẩm trong drupal và gửi nó trong một dịch vụ web. Đối với điều này, tôi đã tạo ra một loại thực thể với các đoạn văn cho mỗi sản phẩm. Làm thế nào tôi có thể tải đoạn văn và truy cập vào các trường của nó? Cho đến bây giờ tôi chỉ thấy target_id và target_Vvision_id của sản phẩm. Cảm ơn!

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

Kết quả:

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

Câu trả lời:


13

Bạn sẽ có thể bao gồm lớp thực thể Đoạn và sử dụng Paragraph::load($entity_id)để tải nó.

Thí dụ:

use Drupal\paragraphs\Entity\Paragraph;

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

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

Tôi biết điều này đã cũ, nhưng có thể hữu ích cho tương lai. Để tải các thực thể được tham chiếu bởi một thực thể Nút, bạn có thể sử dụng thuộc entitytính. Ví dụ, hãy xem xét mã sau đây:

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

Vì vậy, không cần phải tải một thực thể theo id thực thể, bạn chỉ cần sử dụng thuộc ->entitytính người dùng qua danh sách các thực thể được tham chiếu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.