Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Panda58dev

Новачок
  
  • Публікації

    21
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем Panda58dev

  1. Хм, похоже у меня какие то проблемы с dataType. Сейчас везде поставил json но в url почему то там где должно быть содержимое файл стоит [object%20Object]

    Вообще сейчас я путаюсь, что куда мне нужно кодировать json в base64 или наоборот. В результате мне нужен json массив в файле...

  2. @Blast угу, то есть, я генерирую ссылку для скачивания и записываю всю строку в url? Сделал почти так же как в Вашем примере, но выполняется .error хотя код ответа 200, разумеется подумал на ошибки PHP, но в журнале ошибок нет, error_get_last() тоже возвращает пустоту. Странное дело. 
    Контроллер:

    public function getTplFile(){
        if (isset($this->request->post['tpl_name'])) {
            $this->load->model('user/users_perm_plus');
    
    //      $data = $this->model_user_users_perm_plus->getTplPermData($this->request->post['tpl_name']); // (array) $data
    //      $data['tpl_name'] = $this->request->post['tpl_name'];
    
            $data = 'test';
    
            $file_name = 'upp_tpl_' . $this->request->post['tpl_name'] . '.json';
            $file_data = 'data:text/plain;base64,' . base64_encode($data);
    
            $json['file_name'] = $file_name;
            $json['file_data'] = $file_data;
    
            $this->response->addHeader('Content-Type: text/plain');
            $this->response->addHeader('Content-Disposition: attachment; filename="' . $file_name . '"');
            $this->response->setOutput(json_encode($json));
    //      $error = error_get_last();
    //      $this->response->setOutput($error);
        }
    }

    AJAX:

    function getTplFile(tpl_name) {
        $.ajax({
            url: '<?php echo $link_to_getTplFile; ?>&token=<?php echo $token; ?>',
            method: 'POST',
            dataType: 'text/plain',
            data: {
                tpl_name: tpl_name
            },
            beforeSend: function () {
                $('.panel-title').html('<i class="fa-green fa fa-spinner fa-pulse fa-3x fa-fw"></i><?php echo $text_loading; ?>');
            },
            complete: function () {
                $('.panel-title').html('<i class="fa fa-table"></i>');
            },
            success: function(json) {
                console.log(json);
                $('#tpl-file-link').attr('href', json['file_data']).attr('download', json['file_name']);
                document.getElementById("tpl-file-link").click();
            },
            error: function (error) {
                console.log(error);
            }
        });
    }

    Ответ сервера:
    image.png.05c41616d4e20f80645cd37d7709eb50.png

  3. 06.03.2022 в 19:00, spectre сказал:

    да на контроллер какой-то, типа common/download

    Вообще не понял. У меня есть уже контроллер, который отдаёт файл. AJAX-ом он не обрабатывается... 

    ocStore 2.3.0.2.4 если что...

  4. 06.03.2022 в 18:52, stickpro сказал:

    через ajax нельзя качать файл, но можно сделать скрытую ссылку и вызвать ее триггер вот пример для axios на ajax перепишите сами 

    опять же - Вы предлагаете хранить файл на сервере.

  5. 06.03.2022 в 18:50, spectre сказал:

    аяксом надо формировать ссылку на файл и открывать его в новой вкладке

    Да нет, суть заключается в том, что бы файл создавался "на лету" и не хранился на сервере. 

  6. Здравствуйте! Есть задача - нужно, что бы на сервере формировался файл, который мог бы скачать пользователь, этим занимается отдельный метод в контроллере, который вызывается посредством AJAX запроса. На "Хабр Q&A" решение подобной задачи уже есть. Проблема заключается в том, что оно по какой то причине не работает - все заголовки отправляются, на фронт всё приходит, но вот файл никакой не качается. Скрины с ответом сервера и кодом прилагаю. 

    image.thumb.png.9d0af7dee6f536088e14559467c8f858.png

    image.png.58547ccfef2393eb1bc5ade513786f2e.png

    image.thumb.png.88c19a272b6e91ae323011527b5a0eac.png

     

    Пробовал ответ сервера делать через "echo" - результат точно такой же. 

  7. 7 минут назад, StrikerXP сказал:

    По какой то причине ни один из способов не работает

    Мой способ может не работать, просто потому что у Вас не дефолтный шаблон, или шаблон, который не поддерживает bootstrap. Ну или просто не туда вставили строку :)
    можно Ваш product.tpl?
     

    • +1 1
  8. В 04.02.2022 в 22:23, Tom сказал:

    Редактировать файл product.tpl используемого шаблона.

    Может костыль но на дефолтной локалке (ocStore v2.3.0.2.4), вроде работает:
    \catalog\view\theme\default\template\product\product.tpl строка 135

    <li><?php echo $text_stock; ?> <?php echo ($stock == 0)? '<span class="label label-danger">' . $stock . '</span>' : '<span class="label label-success">' . $stock . '</span>'; ?></li>

    Snag_2f65db9.thumb.png.031b8e52c853b6df0f15f95a2707828e.pngSnag_2f64e28.thumb.png.202d094a5ad3a908f3952c3ff7551c8e.png

    • +1 1
  9. 7 минут назад, romveld сказал:

    Эта библиотека позволяет привязаться к конкретному разрешению в пикселях, или только к типам устройств?

    Она "привязывается" к типам устройств, и имеет множество методов анализа юзер-агента: ссылка.

    • +1 1
  10. 2 минуты назад, Shureg сказал:

    Если ваш реальный код другой, копируйте его, а не загадывайте ребусы.

    Окей, с запросом разобрался, оказывается проблема и правда была в url: контроллер, метод index(), в нём подключаю js файл и передаю в шаблон url:

    $this->document->addScript('view/javascript/users_perm_plus/users_perm_plus.js');
    $data['getPerms'] = $this->url->link('user/user_permission/getPerms', 'token=' . $this->session->data['token'] . $url, true);

    Тут-то и вся проблема - указал не тот контроллер )

    Но теперь другая проблема есть: кидает вот такую ошибку:

    image.thumb.png.5423636fb36c8d22fa7b71a06d9bf41b.png

  11. 1 минуту назад, Shureg сказал:

    Неужели вас в гугле забанили?

    Слава богу - нет :)
    В приложенном коде видно, что запрос отправляет функция getPerms() которая принимает один единственный параметр - url адрес. Адрес по которому отправляется запрос я тоже описал: .../admin/index.php?route=controller/file/method&token=... 
    Если у Вас есть ещё предположения, сильно прошу их высказать! 

    • +1 1
  12. 9 минут назад, Shureg сказал:

    Посмотрите хотя бы базовые способы jquery ajax-запросов. Вы его отправляете пустой в никуда.

    Ну допустим я к запросу добавляю data: 'test', но от этого ничего не меняется. Что конкретно не так с запросом? Как сделать что бы он отправлялся "в куда"? :)

  13. ocStore v2.3.0.2.4

    Товарищи, приветствую! Пишу модуль в админке, имею контроллер, который загружает основной шаблон. Этот шаблон использую JQ и AJAX обращается к серверу, ожидая, что тот выполнит метод, описанный в контроллере. Этот метод, в свою очередь,  выполняет некоторые манипуляции с данными, потом передаёт их второму шаблону (tpl) и тот уже должен выводиться: 

    public function method() {
        if ($this->request->server['REQUEST_METHOD'] == 'POST') {
            //code...
            $this->response->addHeader('Content-Type: html');
    	$this->response->setOutput($this->load->view('controller/template', $data));
        }
    }

    AJAX запрос отправляется, и возвращается ответ с кодом 200, в виде html "Страница не найдена". В итоге AJAX стучится в .../admin/index.php?route=controller/file/method&token=... но когда я перехожу по этому адресу, так же вижу сообщение "Страница не найдена". Запрос такой: 

        function getPerms(url) {
            $.ajax({
                url: url,
                method: 'POST',
                dataType: 'html',
                brforeSend: function(){
                    $('.panel-title>i').replaceWith('<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i>');
                },
                complete: function(){
                    $('.panel-title>i').replaceWith('<i class="fa fa-table" aria-hidden="true"></i>');
                    console.log('complete');
                    console.log(url);
                },
                success: function(data){
                    $('#upp-table').html(data);
                    console.log(data);
                },
                error: function(){
                    console.log('error');
                }
            });
        }

    Как правильно обратиться к методу, что бы получить его ответ (готовый шаблон)?
     

  14. Установил ocStore последней версии на сервер (debian 10) с версией php 7.3.27. Всем файлам дал владельца и группу "www-data":Snag_829523.png.4204c652f4ab7d9a8d026301697023af.png

    Установка прошла успешно, БД подцепилась и даже сайт отображается нормально, но к сожалению войти в админку у меня просто не получается! Чистил куки, менял браузер, переустанавливал cms, и всё бестолку - зловещая надпись Неправильная токен-сессия. Авторизуйтесь снова.  продолжала маячить:

     

    Если посмотреть в вкладку "network" в devtools то выведет следующее:

    Snag_89ce80.thumb.png.df3de6e1f126fa065f228e4695b1904d.png
    За любую помощь буду очень благодарен!

  15. Здравствуйте! Я начинающий пользователь Open Cart, недавно знакомый посоветовал углубиться в эту cms, так же посоветовал использовать версии 2.x. Я заинтересовался, поставил ocStore, и начал в нём копаться. Разумеется на тот момент я уже знал о существовании модулей, так же как и на других. Собственно мой вопрос заключается в том, как эти модули создавать? в интернете нашёл только этот перевод, но хотелось бы увидеть ещё подобные, что бы было с чем сравнивать. Прошу посоветовать пару статеек/мануалов по созданию модулей и использованию API open cart-a.

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.