Ответить Новая тема Новый опрос 
Всего: 3 < 1 2 3
 Форма контактов
ggyyvv


Cпециалист
Сообщений: 233
Регистрация: 23-11-2012


08-09-2015 00:32
Алекс, спасибо огромное за помощь!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ggyyvv


Cпециалист
Сообщений: 233
Регистрация: 23-11-2012


11-09-2015 22:32
Цитата:( Алекс @ 03-09-2015 12:55 Смотреть сообщение )
Откройте файл /controllers/front/OrderController.php и в метод postProcess добавьте что-то подобное:
Код:
if ($this->step == 2 && $fileAttachment = Tools::fileAttachment('fileUpload'))
    move_uploaded_file($fileAttachment['tmp_name'], _PS_UPLOAD_DIR_ . $this->context->cart->id . '__' . uniqid() . $fileAttachment['name']);


В файле /themes/тема/order-address.tpl добавьте в форму подобный код:
Код:
<p class="form-group">
    <label for="fileUpload">{l s='Attach File'}</label>
    <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
    <input type="file" name="fileUpload" id="fileUpload" class="form-control" />
</p>

Алекс, если возможно, напишите, как реализовать загрузку файла (вышеприведенный код кажется работает с уже загруженным файлом) и нужно ли где-то резервировать переменные?


Сообщение отредактировал ggyyvv (11-09-2015 17:32)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ggyyvv


Cпециалист
Сообщений: 233
Регистрация: 23-11-2012


13-09-2015 21:44
Цитата:( Алекс @ 03-09-2015 13:44 Смотреть сообщение )
Для заказа в один шаг необходимо использовать библиотеку ajaxfileupload и переписывать код под неё.


если делать под ajaxfileupload, как я понимаю, нужно добавление форм типа <form method="post" action="" enctype="multipart/form-data">
в файле order-opc-new-account.tpl их уже две.

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

как это можно побороть?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ggyyvv


Cпециалист
Сообщений: 233
Регистрация: 23-11-2012


13-09-2015 21:57
нашел готовый загрузчик https://github.com/davgothic/AjaxFileUpload
работает отдельно хорошо, вставляю в order-opc-new-account.tpl форму, подключаю прилагающиеся скрипты, но кажется не отрабатывает upload.php - не пойму куда его закинуть на сайте...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ggyyvv


Cпециалист
Сообщений: 233
Регистрация: 23-11-2012


14-09-2015 21:20
с загрузчиком разобрался, файлы подгружаются

осталось файл upload.php подключить так чтобы можно было использовать переменные для загрузки в каталог загрузки магазина и задания имени файла с id заказа

так понимаю его надо в OrderOpcController.php

заранее благодарен, если кто сможет подсказать, как это можно сделать
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


15-09-2015 01:08
Цитата:( ggyyvv @ 14-09-2015 22:20 Смотреть сообщение )
и задания имени файла с id заказа

До оформления заказа ID самого заказа еще нет!
Для сохранения файлов используйте ID корзины.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ggyyvv


Cпециалист
Сообщений: 233
Регистрация: 23-11-2012


15-09-2015 08:54
вставил форму в order-opc-new-account.tpl
Код:
<form method="post" action="" enctype="multipart/form-data">
    <label>File Input: <input type="file" name="file" id="demo1" /></label>
</form>

в OrderOpcController.php подключил скрипт
Код:
var interval;
    var $upload="uploaded.php";
            
            function applyAjaxFileUpload(element) {
                $(element).AjaxFileUpload({
                    action: $upload,
                    onChange: function(filename) {
                        // Create a span element to notify the user of an upload in progress
                        var $span = $("<span />")
                            .attr("class", $(this).attr("id"))
                            .text("Uploading")
                            .insertAfter($(this));
...
}

            applyAjaxFileUpload("#demo1");

загрузил файл uploaded.php
Код:
$whitelist = array('jpg', 'jpeg', 'png', 'gif');
$name      = null;
$error     = 'No file uploaded.';


if (isset($_FILES)) {
    if (isset($_FILES['file'])) {
        $tmp_name = $_FILES['file']['tmp_name'];
        $name     = basename($_FILES['file']['name']);
        $name      = $cart_qties.'___'.$name;
        $error    = $_FILES['file']['error'];
        
        if ($error === UPLOAD_ERR_OK) {
            $extension = pathinfo($name, PATHINFO_EXTENSION);

            if (!in_array($extension, $whitelist)) {
                $error = 'Invalid file type uploaded.';
            } else {
            move_uploaded_file($tmp_name, 'upload/'.$name);
            }
        }
    }
}

echo json_encode(array(
    'name'  => $name,
    'error' => $error,
));
die();


переменную $cart_qties взял для примера, но ни она, никакая другая не подгружается в функции :suicida1:

что ей нужно, чтобы она отображалась?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
ggyyvv


Cпециалист
Сообщений: 233
Регистрация: 23-11-2012


26-09-2015 21:05
Алекс, если можно, помогите еще с вопросом отправки данных о загруженном файле.

в вышеприведенном коде в файле uploaded.php формируется файл с названием $name

как это название файла передать с письмом через модуль mailalerts?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос 
Всего: 3 < 1 2 3