2013-03-02 72 views
1

我有一個內容類型除了其他字段以外還有無限的文件字段。在節點保存/提交時,我想爲字段中的每個文件創建一個附加節點,並將該文件字段分配給它。對於nodeapi鉤子和逐步創建節點我沒有問題,但我無法從節點訪問文件字段的內容。當我從hook_node_insert內打印的FileField內容,我得到: ...Drupal7將文件域複製到提交的另一個節點

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

....

不是格式化,並進行現場我通常會看到的。我的懷疑是,我可以從表單中以某種方式訪問​​它,並在修改後進行表單提交,但我不確定如何執行此操作,它可能不是最好的方式。讓我知道,如果你有任何提示,非常感謝。

回答

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

我沒有測試過這一點,但不要讓我知道,如果你面對任何問題。

+0

這樣做了,謝謝! – 2013-03-02 20:30:32

+0

很高興知道它的工作原理,@JamesNorman,因爲你似乎是新的堆棧溢出,我強烈建議你接受爲你工作的答案。如果您遇到任何問題(是的問題)或對您有用的答案,請立即加入。謝謝。 – D34dman 2013-03-03 10:03:20

相關問題