Drupal 8: Как отредактировать значение поля абзаца?

Мне интересно, могу ли я установить значение абзаца. в моем модуле я использую функцию entity_presave, и если я пытаюсь получить значения Paragraph, она работает нормально, но если я пытаюсь установить или отредактировать значение, оно каким-то образом не работает.

function setParagraph($node)
{
  $paragraph = $node->field_paragraphs->getValue();
  // Loop through the result set.
  foreach ($paragraph as $element) {
    $p = \Drupal\paragraphs\Entity\Paragraph::load($element['target_id']);
    $foo = $p->field_foo>value;
    $bar = $p->field_bar->value;

`$foo and $bar are getting filled with the right values`

but if i want to set a value nothing will work 

    $p->set('field_foo', $bar); //not working
    $p->field_foo = $bar;  //not working
    $p->field_foo->value = $bar; notworking
    //$p->set('field_steamconnect', $steamconnect);
  }
}

2 ответа

      use Drupal\node\Entity\Node;
use Drupal\paragraphs\Entity\Paragraph;

$p = Paragraph::Create();
$p->set('field_foo', [
  'field_1' => 'xxx',
  'field_2' => 'yyy',
]); 
$p->save();

$node = Node::Create();
...
$node->set('field_paragraph', [
  'target_id' => $p->id(),
  'target_revision_id' => $p->getRevisionId(),
]);
$node->save();

Ах

$p->set('field_foo', $bar); 
$p->save();

заработает

Другие вопросы по тегам