2013-03-02 4 views
1

J'ai un type de contenu avec des champs de champs de fichier illimités en plus des autres champs. Au noeud enregistrer/soumettre je voudrais créer un noeud supplémentaire pour chaque fichier dans le domaine, et lui assigner ce champ de fichier. Je vais bien avec les hooks nodeapi et créer le noeud de façon progmatique, mais je ne peux pas accéder au contenu du fichier depuis le noeud. Lorsque j'imprime le contenu de FileField à l'intérieur hook_node_insert je reçois: ...Drupal7 Copier le champ de fichier dans un autre noeud à l'adresse

(
    [fid] => 38 
    [display] => 1 
    [description] => 
    [upload_button] => Upload 
    [remove_button] => Remove 
    [upload] => 
    ) 

....

pas le champ formaté et procéder Normalement je voir. Mon soupçon est que je peux accéder à ceci d'une manière ou d'une autre du formulaire et soumettre un formulaire après l'avoir modifié, mais je ne suis pas sûr de savoir comment le faire et ce n'est peut-être pas le meilleur moyen. Faites-moi savoir si vous avez des conseils à ce sujet, grandement apprécié.

Répondre

1

puisque nous avons [fid] rempli nous pouvons utiliser file_load($fid) pour charger l'objet fichier. Vous pouvez ensuite convertir cet objet fichier en tableau, puis le joindre au champ de fichier du noeud nouvellement créé.

boucle dans le tableau et pour chaque $fid vous rencontrez ..

$file = file_load($fid);  
$new_node= new StdClass(); 
$new_node->type = 'image'; 
$new_node->language = LANGUAGE_NONE; 
node_object_prepare($new_node); 

// add additional data about new node. 

$new_node->field_custom_files[LANGUAGE_NONE][] = array($file); 

node_submit($new_node); 
node_save($new_node); 

Je ne l'ai pas testé, mais ne me le faire savoir si vous rencontrez des problèmes.

+0

Ca l'a fait, merci! –

+0

Heureux de savoir que cela a fonctionné, @JamesNorman puisque vous semblez être un nouveau débordement de pile, je vous suggère fortement d'accepter les réponses qui ont fonctionné pour vous. Et au cas où vous rencontrez une question (oui question) ou une réponse qui vous a été utile, s'il vous plaît faire upvote. Je vous remercie. – D34dman

Questions connexes