1

我有一个自定义表单模块,其字段类型为“managed_file”,数据库中有一个条目指向图像的文件路径。

我想在表单首次显示时将此图像预加载到“managed_file”字段中。

我已经尝试分配#default_value给图像的文件路径,但这没有任何作用。

这样做的最佳方法是什么?

$result = db_query('SELECT n.companyName, n.billingEmail, n.leadEmail, n.contactEmail, n.contactEmail,
                        n.url, n.description, n.companyLogo, n.promoVideoUrl
        FROM {leads_client} n WHERE n.clientId = :uid', array(':uid' => $GLOBALS['user']->uid));    

    $row = $result->fetchAssoc();


$form['company_logo'] = array(
  '#type' => 'managed_file',
  '#title' => t('Company Logo'),
  '#description' => t('Allowed extensions: gif png jpg jpeg'),
  '#upload_location' => 'public://uploads/',
  '#default_value' => $row['companyLogo'],
  '#upload_validators' => array(
    'file_validate_extensions' => array('gif png jpg jpeg'),
    // Pass the maximum file size in bytes
    'file_validate_size' => array(1024*1024*1024),
  ),
);
4

1 回答 1

3

默认值需要是文件 ID('managed_file' 的 'managed' 部分表示 Drupal 为您处理file_managed表中的文件,并且对它的任何引用都需要通过 ID)。

如果您当前将 URL 保存在 companyLogo 中,您可能需要考虑将该列更改为 int 并保存文件 ID。这样你现有的代码就可以工作了。

如果您需要在任何时候获取 URI,您可以加载文件:

$uri = file_load($row['companyLogo'])->uri;

如果您需要完整的 URL:

$url = file_create_url($uri);
于 2013-09-15T13:15:53.927 回答