Вывод ссылки на скачивание файла в шаблоне дополнения

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

Вывод ссылки на скачивание файла в шаблоне дополнения

#1 23 мая 2020 в 11:55
Здравствуйте. Подскажите, как организовать вывод ссылки на скачивание файла в шаблоне дополнения.
Подробнее и примеры:

Есть небольшое мое дополнение. Есть форма добавления информации в базу данных, где присутствует загрузка файла на сервер. В базу, например в столбце "file", данные приходят типа (id: 34 name: name.zip size: 3494 path: 000/u1/6/2name.zip). В сам шаблон я передаю это значение в переменную $file['file'], но хотелось бы вывести просто ссылку на скачивание данного файла в самом шаблоне.

Например с загрузкой картинки проще все. В базу попадает значение типа(--- normal: > 000/u1/7/3/картинка.png) и чтобы ее вывести в шаблоне, я получаю данное значение в переменную
  1.  
  2. $image[например - 'logo']
  3.  
и вывожу таким способом
  1.  
  2. <?php echo html_image($image['logo'], 'normal');?>
  3.  
Как мне подобным способом вывести ссылку на скачивание файла?? Помогите примером.
Спасибо
#2 23 мая 2020 в 12:09
  1. <a href="<?php echo href_to('files', 'download', array($image['logo']['id'], files_user_file_hash($image['logo']['path']))); ?>"><?php echo $image['logo']['name']; ?></a>
  2. или
  3. <a href="<?php echo href_to('files', 'download', array($image['logo']['id'], files_user_file_hash($image['logo']['path']))); ?>">Скачать</a>
#3 23 мая 2020 в 12:49


Спасибо за пример, но почему-то он не работает в моем случае. Я понял принцип, но подставляя свои переменные — результат пуст.
Может быть я что-то не до конца понимаю, попробую еще раз описать проблему.

Начну не с самого начала, там проблем нет. В базе есть столбец file, в него записываются данные с загрузки файла я так понимаю массивом.

id: 34
name: file.zip
size: 3494
path: 000/u1/6/2/file.zip

В action файле я получаю это назначение
Пример:

  1.  
  2. $file = $this->model->getFile($id);
  3. if (!$file) {
  4. cmsCore::error404();
  5. }
  6. $template = cmsTemplate::getInstance();
  7.  
  8.  
  9. $template->render('таблица', array(
  10. 'file' => $file,
  11.  
  12. ));
  13.  
  14. }
  15. }
  16.  
В шаблоне могу вывести только строкой типа
  1.  
  2. <?php echo html($file['file']);?>
  3.  
Подставляя в Ваш пример выше — выводит пустоту.
т.е если я делаю так

  1.  
  2. <a href="<?php echo href_to('files', 'download', array($file['file']['id'], files_user_file_hash($file['file']['path']))); ?>"><?php echo $file['file']['name']; ?></a>
  3.  
Может я в action файле как-то не правильно принимаю его или в чем моя ошибка?

Loadырь
#4 23 мая 2020 в 23:40
Народ, ну подскажите. 3-й день сижу(((
#5 23 мая 2020 в 23:56

В базе есть столбец file, в него записываются данные с загрузки файла я так понимаю массивом.

@slava
В в базе в поле типа "Файл" пишется массив данных преобразованный в строку. Если вы с легкостью можете вывести массив строковыми функциями типа
  1. <?php echo html($file['file']);?>
то у вас точно не массив, а строка полученная из базы. Чтобы получить из этой строки массив, надо сделать так
  1. $file['file'] = cmsModel::yamlToArray($file['file']);
#6 24 мая 2020 в 09:26


В базе есть столбец file, в него записываются данные с загрузки файла я так понимаю массивом.

@slava
В в базе в поле типа "Файл" пишется массив данных преобразованный в строку. Если вы с легкостью можете вывести массив строковыми функциями типа
то у вас точно не массив, а строка полученная из базы. Чтобы получить из этой строки массив, надо сделать так
  1. $file['file'] = cmsModel::yamlToArray($file['file']);

Loadырь

Спасибо большое!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.