[msOrderFiles] 1.1.0 - Загрузка файлов к заказу из фронт-энда
        Компонент обрёл возможность загружать файлы из фронт-энда, как при оформлении заказа, так и для уже оформленных заказов. Файлы могут грузить и анонимы, и зарегистрированные пользователи.

Как известно, после оформления заказа анонимом, на указанный email при заказе создаётся пользователь. Так вот этот пользователь прикрепляется и к файлам, которые были загружены при оформлении заказа.
Сниппет лучше всего размещать в чанке tpl.msOrder, чтобы в пустой корзине форма не отображалась.
В нужном месте шаблона письма пишем вызов сниппета pdoResources с нашей моделью msOrderFiles:
Важно учитывать, что это решение 100% работает для miniShop2 >= 2.4, т.к. проверялось только на нём. Хотя можно попытаться совместить и с более ранними версиями магазина, скорее всего, даже без существенных правок.
    
    
                                                        
Как известно, после оформления заказа анонимом, на указанный email при заказе создаётся пользователь. Так вот этот пользователь прикрепляется и к файлам, которые были загружены при оформлении заказа.
Вывод формы загрузки файлов
Сниппет лучше всего размещать в чанке tpl.msOrder, чтобы в пустой корзине форма не отображалась.
Параметры сниппета msofForm:
- tpl — Шаблон вызова формы,
 - order — ID заказа. По-умолчанию 0,
 - user — ID пользователя. По-умолчанию текущий,
 - source — Источник файлов. По-умолчанию указывается из настройки msof_source,
 - anonym — Позволять ли анонимам пользоваться формой,
 - dropzone — Массив параметров Dropzone, можно JSON,
 - maxFiles — Максимальное кол-во файлов. По-умолчанию 2,
 - maxFilesize — Максимальный размер файла в MB. По-умолчанию 2.
 
Пример вызова:
{'!msofForm' | snippet : [
    'maxFiles' => 20,
    'maxFilesize' => 10,
    'anonym' => false,
]}Важно
Чтобы пользователь мог загружать файлы из фронт-энда, добавьте его группе политику доступа msOrderFilesPolicy. Тоже касается и анонимов.Вывод файлов в письме пользователю/менеджеру
В нужном месте шаблона письма пишем вызов сниппета pdoResources с нашей моделью msOrderFiles:
{'!pdoResources' | snippet : [
    'class' => 'msOrderFile',
    'loadModels' => 'msOrderFiles',
    'where' => [
        'order_id' => $order['id'],
        'active' => 1,
    ],
    'sortby' => '{"rank":"ASC"}',
    'tplWrapper' => '@INLINE <ul>{$output}</ul>',
    'tpl' => '@INLINE <li><a href="{("site_url" | option) ~ $url}">{$name}</a></li>',
]}Важно учитывать, что это решение 100% работает для miniShop2 >= 2.4, т.к. проверялось только на нём. Хотя можно попытаться совместить и с более ранними версиями магазина, скорее всего, даже без существенных правок.
P.S.
- Спасибо Володе за UserFiles, код которого был ориентиром для JS составляющей при работе с DropzoneJS.
 - Спонсор выпуска Дмитрий (inetadm).
 
Новая версия уже в репозитории
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            Комментарии: 2
                Спасибо Павлу за оперативность и нужный компонент. Тут уже несколько раз поднималась подобная тема, но все они оказывались без решения. Уже запущен в работу на одном из моих проектов.            
                    
                Подскажите подойдет ли данный компонент для такой задачи:
Нужно, чтобы покупатель на странице оформления заказа прикрепил файл с реквизитами компании.
                    Нужно, чтобы покупатель на странице оформления заказа прикрепил файл с реквизитами компании.
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.