[ICMS2] Сохранение данных из базы данных в файл на ПК пользователя

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#16 4 января 2015 в 23:04
О Великий из Великих! scratch
Как же я долго ждал твоего появления facepalm

Вообщем я так и понял, что где то я чего-то намудрил, что где то логику не догоняю.
Вообщем я уже решил сделать как говоришь ты, то есть сначала вывести страницу а затем уже делать выдачу.
Спасибо за ссылку — счас почитаю.
#17 4 января 2015 в 23:13
На счет "принципиальности" не совсем понял. Мне вообще то как бы всеравно на какой странице будет отдан файл.
Попробую более подробней описать требуемую мне логику.

Мне необходимо выгрузить файлы с моего компонента "Мои патчи".

Имеем список всех патчей.
В блоке "Действия" есть пимпа "Выгрузить".
Нажимая её происходит следующие:
1. вытягивание из базы данных относительно выбранного патча.
2. приведение этих данных к определенному формату и сохранение их во временный файл в папке кеша.
3. передача данного файла пользователю на компьютер
4. удаление временного файла.

Как-то так.
#18 5 января 2015 в 21:30
Ну что за… блин!
Не выходит аленький цветочек shockcryscratch
#19 5 января 2015 в 21:45

Мне вообще то как бы всеравно на какой странице будет отдан файл

Скорпион
Зачем тогда редиректы? Просто давайте ссылку на экшен, который возвращает файл.
С точки зрения пользователя это будет выглядеть так: нажал на ссылку, открылась новая вкладка в браузере, немножко подумала, предложила сохранить файл, после выбора места закрылась. И всё. То есть это ничем не отличается от простой прямой ссылки на файл.

как говоришь ты

Скорпион
Не сочтите за пижонство, но вроде мы на "ты" не переходили.
#20 5 января 2015 в 22:06

Не сочтите за пижонство, но вроде мы на "ты" не переходили.

r2
Сори. Не коим образом не хотел обидеть. Старая инетовская привычка. zst

На счет редиректов я не где не говорил. Либо упомянул по не знанию.
Ваш вариант не совсем подходит, так как если будет список из сотни патчей и каждый раз для того чтобы скачать нужно будет нажимать — туда-сюда, думаю будет не айсь
Скорее всего я не могу донести основную поставленную задачу, поэтому Вы не понимаете сути.

Попутный вопрос. Вот есть в двойке возможность к статье добавить файл. И при выводе пользователю — он показывается и его можно скачать.
Не могу найти код данной функции (вывод в контенте). Не подскажете?
#21 5 января 2015 в 22:09

Я об этом месте
#22 5 января 2015 в 22:26
Нииичего не понимаю © facepalm

вот код шаблона вывода tpl
  1.  
  2. <?php
  3. $this->addToolButton(array(
  4. 'class' => 'add',
  5. 'title' => LANG_MYPATCH_ADD,
  6. 'href' => href_to($this->controller->root_url, 'patch_add')
  7.  
  8. ));
  9.  
  10. ?>
  11. <a href="<?php echo $patchfile ?> ">Скачать</a>
  12. <?php $this->renderGrid($this->href_to('patch_ajax'), $grid);
  13.  
  14.  
Почему при нажатии на "Скачать" снова появляется этот чертов круг от AJAX — я же ничего не прошу перегружать — просто хочу скачать файл и все.
#23 5 января 2015 в 22:34

Почему при нажатии на "Скачать" снова появляется этот чертов круг от AJAX — я же ничего не прошу перегружать — просто хочу скачать файл и все.

Скорпион
Я понял проблему. Так происходит потому, что админка показывает анимацию загрузки по событию onbeforeunload на каждой странице. Чтобы это обойти используйте не прямую ссылку на загрузку, а JS-функцию обертку. В этой функции перенаправляете на экшен загрузки, затем удаляете оверлей с крутилкой.

Например, ссылка на скачку будет выглядеть так:
  1. javascript:downloadPatch("/url/to/static/download/id")
сама функция (можно определить в шаблоне):
  1. function downloadPatch(url){
  2. window.location.href = url;
  3. $('.loading_overlay').hide();
  4. }
  5.  
#24 5 января 2015 в 22:39
ууууу — я с PHP кое как с учебником то сижу разбираюсь — а ява для меня не то что лес — а бездомная пропасть :(
#25 5 января 2015 в 22:42
ну как бы готовое решение выше
#26 5 января 2015 в 22:58
danceща попробуем
P.S. Я после десятой попытки переписать код по другому стал подумывать что явно нужно использовать что-то другое чем PHP
#27 6 января 2015 в 00:44
все равно крутиться круг :(

Вот код:
Правильно я его написал?

  1.  
  2. <script>
  3. function downloadPatch(url){
  4. window.location.href = url;
  5. $('.loading_overlay').hide();
  6. }
  7. </script>
  8.  
  9. <?php
  10. $this->addToolButton(array(
  11. 'class' => 'add',
  12. 'title' => LANG_MYPATCH_ADD,
  13. 'href' => href_to($this->controller->root_url, 'patch_add')
  14.  
  15. ));
  16. ?>
  17.  
  18.  
  19. <a href=javascript:downloadPatch("<?php echo $patchfile?>")>Скачать</a>
  20.  
  21. <?php $this->renderGrid($this->href_to('patch_ajax'), $grid);
  22.  
#28 6 января 2015 в 01:19
Одну неточность я нашел.
  1. $('.loading_overlay').hide();
я думаю нужно так
  1. $('.loading-overlay').hide();
именно loading-overlay отвечает за долбанный круг.
Скрипт срабатывает — но почему-то не убирает данный класс.
#29 6 января 2015 в 01:26
УРА!!! Победа!
вот как сработало:
  1. $('.loading-overlay').toggleClass('loading-overlay');
#30 6 января 2015 в 02:36
Ну раз проблема с кругом решается удалением класса, может кто подскажет как его удалить на лету, при помощи ява скрипта.
Например по нажатию мышки на странице в любом места.
Помогите — а то я в яве вообще нуб.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.