web-dev-qa-db-fra.com

Comment créer des éléments de paragraphes imbriqués par programme?

Fondamentalement, je génère programmablement un nœud. Ces nœuds ont plusieurs paragraphes anidés comme celui-ci:

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

-another parent
 ..etc..

Je le fais avec des paragraphes, j'ai un paragraphe parent qui comprend un autre. Au moment de générer le nœud, je génère une manière suffisante le paragraphe parent avec le code suivant: ('champ_contenido_padre' est le champ qui contient le paragraphe parent)

$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();

D'ACCORD. cela marche. Après plus loin d'ici, c'est mon problème. Maintenant, je voudrais joindre un paragraphe de l'enfant à ce paragraphe parent récemment généré. J'ai essayé ce qui suit sans succès:

  1. tout d'abord, génère le paragraphe de l'enfant ('champ_acordon_hijo' est le champ du paragraphe parent contenant l'enfant)
$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. Maintenant, j'essaie de sauver l'enfant récent dans le champ de conteneur du parent:

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

Je ne reçois aucune erreur, le paragraphe parent est généré bien, mais je ne vois pas les paragraphes des enfants: - /

Je suppose que c'est parce que je joins de l'enfant au parent, alors que je dois peut-être l'attacher au nœud; Mais dans ce cas, comment pointer l'enfant au parent?

1
leandro713

Après deux jours, enfin, je le faisais travailler. L'étape 3 n'est pas nécessaire. Mon erreur était à l'étape 2, où j'ai écrit mal le nom du paquet :donc c'était

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

notez le soulignement dans --- (Acordeon_Hijo

2
leandro713