Як отримати значення поля абзацу?


12

Я хотів би створити список продуктів у друпалі та надіслати його у веб-сервісі. Для цього я створив тип сутності з абзацами для кожного продукту. Як я можу завантажити абзац і отримати доступ до його полів? До цих пір я бачу лише 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;
}

Отже, не потрібно завантажувати сутність за ідентифікатором сутності, ви просто маєте ->entityвласність користувача над посиланням на список об'єктів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.