我有一个自定义表单模块,其字段类型为“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),
),
);
答案 0 :(得分:3)
默认值必须是文件ID('managed_file'的'托管'部分意味着Drupal在file_managed
表中为您处理该文件,并且对它的任何引用都需要通过ID)。
如果您当前正在保存companyLogo中的URL,则可能需要考虑将该列更改为int并改为保存文件ID。这样你现有的代码就可以了。
如果您需要随时获取URI,可以加载文件:
$uri = file_load($row['companyLogo'])->uri;
如果您需要完整的网址:
$url = file_create_url($uri);