【问题标题】:Drupal7 copy filefield to another node at submitDrupal7 在提交时将文件字段复制到另一个节点
【发布时间】:2013-03-02 08:28:57
【问题描述】:

我的内容类型除了其他字段外还具有无限的文件字段字段。在节点保存/提交时,我想为字段中的每个文件创建一个附加节点,并将该文件字段分配给它。我对 nodeapi 挂钩并以编程方式创建节点很好,但我无法从节点访问文件字段的内容。当我从 hook_node_insert 中打印文件字段内容时,我得到: ...

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

....

不是我通常会看到的格式化和继续字段。我怀疑我可以从表单中以某种方式访问​​它并在修改后提交表单,但我不确定如何执行此操作,它可能不是最好的方法。如果您对此有任何建议,请告诉我,不胜感激。

【问题讨论】:

    标签: drupal drupal-7 drupal-files


    【解决方案1】:

    因为我们已经填充了[fid],我们可以使用file_load($fid) 来加载文件对象。然后您可以将此文件对象转换为数组,然后将其附加到新创建的节点的文件字段中。

    循环遍历数组和遇到的每个$fid..

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

    我尚未对此进行测试,但如果您遇到任何问题,请告诉我。

    【讨论】:

    • 很高兴知道它有效,@JamesNorman 因为您似乎是新的 t 堆栈溢出,我强烈建议您接受对您有用的答案。如果您遇到任何对您有用的问题(是的问题)或答案,请点赞。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2016-01-01
    • 2017-05-15
    • 2014-02-06
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多