Интернет магазин

InstantCMS 2.X
#16 6 мая 2022 в 10:20

 Baza, C:\fakepath\kartinka.zip, потому, что в файле  templates\...\controllers\showcase\tpl\steps\cart_step_fields.tpl.php на ссылке «Оформить заказ» весит событие onchange, которое отправляет данные полей в  system\controllers\showcase\actions\save_cart_data.php. А так как ваш файл, как бы не файл, то и прописывается там, то, что ОС считает нужным. Вам надо сделать следующее.

В файлеtemplates\...\controllers\showcase\tpl\steps\cart_step_fields.tpl.php внизу найти такой код

  1. $(".sc_cart_fields .sc_cField_value").on("change blur", "*[name]", function() {
  2. if ($(".sc_cart_fields .sc_cField_value *[name]").length) {
  3. $(".sc_cart_fields .sc_cField_value *[name]").each(function(index, field) {
  4. if ($(field).attr('name')) {
  5. data[$(field).attr('name')] = $(field).val();
  6. }
  7. });
  8. $.post('/showcase/save_cart_data', data, false, 'json');
  9. }
  10. });

и поменять на так

  1. $(".sc_cart_fields .sc_cField_value").on("change blur", "*[name]", function() {
  2. if ($(".sc_cart_fields .sc_cField_value *[name]").length) {
  3. $(".sc_cart_fields .sc_cField_value *[name]").each(function(index, field) {
  4. if ($(field).attr('name') && $(field).attr('name') != 'file') {
  5.  
  6. data[$(field).attr('name')] = $(field).val();
  7. }
  8. });
  9. $.post('/showcase/save_cart_data', data, false, 'json');
  10. }
  11. });

Далее  файл templates\...\controllers\showcase\fields\cart_fields\file.tpl.php

  1.  
  2. <input
  3. onchange="setFile(this)"
  4. id="<?php html($field['name']); ?>"
  5. name="<?php html($field['name']); ?>"
  6. <?php if (!empty($field['is_fixed'])){ ?>required <?php } ?>
  7. <?php if ($field['attributes'] && is_array($field['attributes'])){ ?>
  8. <?php foreach ($field['attributes'] as $key => $val){ ?>
  9. <?php if ($key == 'id' || $key == 'name'){ continue; } ?>
  10. <?php html($key); ?>="<?php html($val); ?>"
  11. <?php } ?>
  12. <?php } ?>
  13. type="file"
  14. value=""
  15. />
  16.  
  17. <style>.sc_cField_value #<?php html($field['name']); ?>{width:100%;padding:6px 8px;border:1px solid #ddd;background:#f7f7f7;outline:none}</style>
  18.  
  19. <?php ob_start(); ?>
  20. <script>
  21. async function setFile(inp)
  22. {
  23. let formData = new FormData();
  24. let file = inp.files[0];
  25.  
  26. formData.append("file", file);
  27.  
  28. fetch('', {method: "POST", body: formData});
  29.  
  30. }
  31. </script>
  32. <?php $this->addBottom(ob_get_clean()); ?>

теперь файл system\controllers\showcase\actions\cart.php в самом верху добавляем

  1. public function run($step = 0){
  2.  
  3. $file = $_FILES;
  4. if($file){
  5. cmsUser::sessionSet('file',$file);
  6. }
  7.  

Всё. Теперь у вас есть все данные для обработки файла. Теперь в файле system\controllers\showcase\actions\save_cart_data.php вы можете получить

данные из сессии, загрузить файл на сервер и в $data['file'] прописать или путь или саму картинку. Хотя это можно сделать сразу, а в сессию уже записать то, что нужно поместить в $data['file'].

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.