drupal 7 - 通过代码将文件附加到节点

时间:2011-07-08 16:55:43

标签: file drupal drupal-7 cck

我想将文件关联到节点。到现在为止还挺好。创建一个cck类型文件,问题解决了。但我不能这样做,我不希望用户选择该文件。有问题的文件已经在系统中。 我试图将文件作为#default_value字段放置并使用hook_form_FORM_ID_alter隐藏它,但是失败了。

function my_module_form_node_form_alter(&$form, $form_state, $form_id) {
    if(isset($form['type']) && isset($form['#node'])) {
        $type = $form['#node']->type;

        if(stripos($type, 'node-type') === FALSE)
            return;

        switch($type) :
            case 'node-type_xyz':
                $fid = arg(3);
                $file = file_load($fid);

                // make a cck field_invoice a hidden field
                $form['field_invoice']['#prefix'] = '<div style="display:none;">';
                $form['field_invoice']['#suffix'] = '</div>';

                $form['field_company']['und'][0]['value']['#default_value'] = 'ABC';
                $form['field_account_number']['und'][0]['value']['#default_value'] = '09879';
                break;
        endswitch;
    }
}

有人有什么建议吗?

1 个答案:

答案 0 :(得分:0)

不要使用#prefix和#suffix来隐藏它。相反,将#access设置为false - 这样,人们就无法摆弄表单。您可以在hook_nodeapi或submit函数中设置值,或者将类型设置为'value',将#value设置为您的文件。