web-dev-qa-db-ja.com

段落フィールドにプログラムで用語を追加するにはどうすればよいですか?

分類参照(オートコンプリート)フィールドのある段落があり、プログラムでパラグラフアイテムを作成するときに、このフィールドにデータを入力したいと考えています。このフィールドで[参照エンティティが存在しない場合は作成する]オプションをオンにしました。

私はこのコードを使用していますが、Term :: create(可能な場合)なしでそれを行うための詳細情報を見つける方法がわかりません。

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

        foreach ($field_value as $creator_type => $creator_name) {

            $paragraph = Paragraph::create(['type' => '_zotero_ref_creators']);
            //text field
            $paragraph->set('field_nom_prenom_createur', $creator_name);
            //taxo reference field
            $paragraph->set('field_type_createurs', $creator_type);

            //$paragraph->isNew();
            $paragraph->save();

            $paragraphn_field_value = array(
              'target_id' => $paragraph->id(),
              'target_revision_id' => $paragraph->getRevisionId(),
            );

            $node_reference->set('field_liste_contrib', $paragraphn_field_value);
          }
1
florian_drupal

最初に、すでに作成されているノードをロードします。次に、前と同じように段落を作成しますが、分類用語には「target_id」を追加し、値には用語IDを選択します。ノードからの段落タイプのフィールドに段落値を設定します。また、ノードを保存する必要があります。

    $node = Node::load($nid);    
     $paragraph = Paragraph::create([
            'type' => 'gallery_image',
            'field_type_createurs' => ['target_id' => $value],
          ]);
          $paragraph->save();

          $current[] = [
            'target_id' => $paragraph->id(),
            'target_revision_id' =>$paragraph->getRevisionId(),
          ];

   $node->set('your_field', $current);
   $node->save();

変数$ valueは用語IDです。

お役に立てれば幸いです。

2
OPTASY

これがシンクするのにしばらく時間がかかりました。ノード上に段落エンティティを作成すると考えると、Paragraph::create。最初に考えていたのはParagraph::create段落タイプを作成するのと同じように、もちろん、すでに作成済みです。

@OPTASYのコードの大部分が繰り返されているいくつかのサンプルコードを次に示します。すべてのデータは無害化され、うまくいけば、キーはどのフィールドがいつ参照されるかを明確に示します。

$node = Node::load($nid);

$current = [];
  $paragraph = Paragraph::create([
    'type' => 'my_paragraph_type',
    'field_from_my_paragraph_type' => ['target_id' => 1]
  ]);
  $paragraph->save();

$current[] = [
    'target_id' => $paragraph->id(),
    'target_revision_id' => $paragraph->getRevisionId(),
  ];

$node->set('field_from_my_content_type', $current);
$node->save();
0
esod