2013-09-15 7 views
1

У меня есть модуль пользовательской формы с полем типа «managed_file» и запись в базе данных, указывающая на путь к файлу изображения.Drupal 7 - Заполните поле для заполнения формы с изображением из базы данных

Я хотел бы предварительно загрузить это изображение в поле «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), 
), 
); 

ответ

2

Значение по умолчанию должно быть идентификатор файла (в «управляемую» часть «managed_file» означает Заботясь Друпал файл для вас в file_managed таблицы, и любая ссылка на него должна осуществляться через Я БЫ).

Если вы в настоящее время сохраняете URL-адрес в companyLogo, вы можете захотеть изменить этот столбец на int и сохранить идентификатор файла. Таким образом, ваш существующий код будет работать.

Если вам нужно, чтобы получить URI в любой момент вы можете загрузить файл до:

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

И если вам нужен полный URL от этого:

$url = file_create_url($uri);