web-dev-qa-db-ja.com

プログラムでネストされた段落アイテムを作成する方法は?

基本的に、プログラムでノードを生成しています。これらのノードには、次のようないくつかの注釈付きの段落があります。

-title parent
 -body parent
 -links parent
 -title child
   -body child
   -links child

-another parent
 ..etc..

私は段落でこれを行っています、私には別のものを含む親段落があります。ノードを生成するときに、次のコードで親段落を十分な方法で生成しています:( 'field_contenido_padre'は親段落を含むフィールドです)

$paragraph = new ParagraphsItemEntity(
      array(
        'field_name' => 'field_contenido_padre',
        'bundle' => 'acordeon'));
$paragraph->is_new = TRUE;
$paragraph->setHostEntity('node', $parent);
$paragraph->field_titulo_acordeon[LANGUAGE_NONE][0]['value'] = $value["title"];
$paragraph->field_body[LANGUAGE_NONE][0]['value'] = "jajaja";

$ia = 0;
foreach ($value["items"] as $k => $item){
    $paragraph->field_link_archivo[LANGUAGE_NONE][$ia]['title'] = $item;
    $paragraph->field_link_archivo[LANGUAGE_NONE][$ia]['url'] = $value["items"][((int) $k + 1)];
}
$paragraph->save();

OK。これは機能します。ここからさらに先が私の問題です。次に、この最近生成された親段落に子段落を添付したいと思います。私は成功せずに次のことを試しました:

  1. 最初に、子段落を生成します( 'field_acordeon_hijo'は、子を含む親段落のフィールドです)
$paragraph = new ParagraphsItemEntity(
    array(
      'field_name' => 'field_acordeon_hijo',
      'bundle' => 'acordeon-hijo'));
$paragraph->is_new = TRUE;
$paragraph->setHostEntity('paragraphs_item', $parent);
$paragraph->field_titulo_acordeon_hijo[LANGUAGE_NONE][0]['value'] ='TITULAko Hijo';
$paragraph->body[LANGUAGE_NONE][0]['value'] = 'jajaja';
$paragraph->save();
  1. 次に、最近の子を親のオブジェクトフィールドに保存します。

     $entity = entity_load('paragraphs_item', array($parent->item_id));  
     $entity = reset($entity);  
     $entity->field_acordeon_hijo[LANGUAGE_NONE] = array(
         0 => array(
           'value' => $id_child,
           'safe_value' => $id_child,
           'format ' => NULL));   
     $entity->revision = TRUE;   
     $entity->save(FALSE);   
    

エラーは発生しませんが、親段落は正常に生成されますが、子段落が表示されません:-/

子を親に接続しているためだと思いますが、ノードに接続する必要があるかもしれません。しかしその場合、どのように子供を親に向けるか?

1
leandro713

2日後、ようやく動作しました。手順3は必要ありません。私のエラーはステップ2で、バンドル名を間違って書いた:ので、

new ParagraphsItemEntity(
    array(
      'field_name' => 'field_acordeon_hijo',
      'bundle' => 'acordeon_hijo'))

---(acordeon_hijoの下線に注意してください

2
leandro713