Jump to content
comrues

Кнопка загрузки файлов в форме работает только на одном языке

Recommended Posts

Я добавил кнопку для загрузки файлов в форму обратной связи на странице контакты.

789734083_2020-10-29165936.thumb.png.33efbf167785684f89207d2d8c69474b.png

 

 

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

1767422627_2020-10-29170004.thumb.png.c6d584f0c59369f8827d4ca8028695ef.png

 

 

 

Вод код который я вносил:
information/contact.twig:

Спойлер
<div class="form-group required">
  <label class="col-sm-2 control-label">{{ text_select_file }}</label>
  <div class="col-sm-10">
    <button type="button" id="button-upload" data-loading-text="{{ text_loading }}" class="btn btn-default btn-block">
      <i class="fa fa-upload"></i>{{ text_upload_file }}
    </button>
    <input type="hidden" name="file" value="" />
    <span class="success"></span>
  </div>
</div>

и вставил js сюда же:

 

 

 

controller/information/contact.php:

Спойлер

Создал функцию upload
 

public function upload() {
$this->load->language('tool/upload');

$json = array();

if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name'])) {
// Sanitize the filename
$filename = $this->request->files['file']['name'];

// Validate the filename length
if ((utf8_strlen($filename) < 3) || (utf8_strlen($filename) > 64)) {
  $json['error'] = $this->language->get('error_filename');
  }

  // Allowed file extension types
  $allowed = array();

  $extension_allowed = preg_replace('~\r?\n~', "\n", $this->config->get('config_file_ext_allowed'));

  $filetypes = explode("\n", $extension_allowed);

  foreach ($filetypes as $filetype) {
  $allowed[] = trim($filetype);
  }

  if (!in_array(strtolower(substr(strrchr($filename, '.'), 1)), $allowed)) {
  $json['error'] = $this->language->get('error_filetype');
  }

  // Allowed file mime types
  $allowed = array();

  $mime_allowed = preg_replace('~\r?\n~', "\n", $this->config->get('config_file_mime_allowed'));

  $filetypes = explode("\n", $mime_allowed);

  foreach ($filetypes as $filetype) {
  $allowed[] = trim($filetype);
  }

  if (!in_array($this->request->files['file']['type'], $allowed)) {
  $json['error'] = $this->language->get('error_filetype');
  }

  // Check to see if any PHP files are trying to be uploaded
  $content = file_get_contents($this->request->files['file']['tmp_name']);

  if (preg_match('/\<\?php/i', $content)) {
    $json['error'] = $this->language->get('error_filetype');
    }

    // Return any upload error
    if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
    $json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
    }
    } else {
    $json['error'] = $this->language->get('error_upload');
    }

    if (!$json) {
    $json['file'] = $file = $filename;

    move_uploaded_file($this->request->files['file']['tmp_name'], DIR_UPLOAD . $file);

    // Hide the uploaded file name so people can not link to it directly.
    $this->load->model('tool/upload');

    $json['code'] = $this->model_tool_upload->addUpload($filename, $file);

    $json['success'] = $this->language->get('text_upload');
    }

    $this->response->addHeader('Content-Type: application/json');
    $this->response->setOutput(json_encode($json));
    }


И ещё добавил код перед $mail->send();

if(isset($this->request->post['file'])){
$mail->addAttachment(DIR_UPLOAD.$this->request->post['file']);
}

 

 

Но, как я уже писал выше, файлы загружаются только на одном языке. Подскажите пожалуйста что изменить. И заранее спасибо за помощь)))

Share this post


Link to post
Share on other sites

Ссылку на сайт можно?

Share this post


Link to post
Share on other sites
13 часов назад, DariyGRAY сказал:

Ссылку на сайт можно?

Сайт на локалке

Share this post


Link to post
Share on other sites
1 час назад, Teref сказал:

так тогда и в форум на локалке писать надо. здесь все равно никто не знает тк тут в основном сидят продавцы кода

Насмешили) А вы, наверно, знаете ответ на вопрос ТС. Может поделитесь? Или это демонстрация обиды на то, что сами остались в соседней теме без ответа?

Share this post


Link to post
Share on other sites
1 час назад, comrues сказал:

Сайт на локалке

В таком случае могу лишь предположить, что дополнительный язык в вашей системе добавляет себя в url и получается что-то типа https://vash.site.com/en/page. Ну и форма в таком случае отправляется по адресу с языком. В результате сервер отдает ответ 404. Часто такое встречал с мультиязычными сайтами. Это, уточню, предположение

  • +1 1

Share this post


Link to post
Share on other sites
7 минут назад, Teref сказал:

скажу вам так на кривом заюбагованном ОС может быть что угодно и это тоже самособой

Кривые и забагованные, как правило, модули и руки разработчиков, которые их пишут

  • +1 1

Share this post


Link to post
Share on other sites
4 часа назад, DariyGRAY сказал:

В таком случае могу лишь предположить, что дополнительный язык в вашей системе добавляет себя в url и получается что-то типа https://vash.site.com/en/page. Ну и форма в таком случае отправляется по адресу с языком. В результате сервер отдает ответ 404. Часто такое встречал с мультиязычными сайтами. Это, уточню, предположение

Да, Именно, так. у меня сайт и выводится - sitename.es и sitename.es/ru (использую для этого плагин SEO мультиязык / мультирегион)
Что мне в этом случае стоит изменить?
PS: Огромное спасибо, что отвечаете на мои вопросы.

Edited by comrues

Share this post


Link to post
Share on other sites
1 час назад, comrues сказал:

Да, Именно, так. у меня сайт и выводится - sitename.es и sitename.es/ru (использую для этого плагин SEO мультиязык / мультирегион)
Что мне в этом случае стоит изменить?
PS: Огромное спасибо, что отвечаете на мои вопросы.

 

Самый простой способ проверить мое предположение вслепую - в шаблоне information/contact.twig заменить

<form action="{{ action }}" method="post" enctype="multipart/form-data" class="form-horizontal">

на

<form action="https://YOUR-SITE.COM/index.php?route=information/contact" method="post" enctype="multipart/form-data" class="form-horizontal">

{{ action }} меняете на адрес без языка. Если предположение подтвердится, то что делать дальше, думаю, разберетесь

Share this post


Link to post
Share on other sites
6 часов назад, DariyGRAY сказал:

В таком случае могу лишь предположить, что дополнительный язык в вашей системе добавляет себя в url и получается что-то типа https://vash.site.com/en/page. Ну и форма в таком случае отправляется по адресу с языком. В результате сервер отдает ответ 404. Часто такое встречал с мультиязычными сайтами. Это, уточню, предположение

Пока что понял что происходит редирект 301

698021838_2020-10-30182606.thumb.png.aa7ed9ee9c4263e3888d3d91a85f29e9.png

 

Share this post


Link to post
Share on other sites
23 минуты назад, DariyGRAY сказал:

 

Самый простой способ проверить мое предположение вслепую - в шаблоне information/contact.twig заменить

<form action="{{ action }}" method="post" enctype="multipart/form-data" class="form-horizontal">

на

<form action="https://YOUR-SITE.COM/index.php?route=information/contact" method="post" enctype="multipart/form-data" class="form-horizontal">

{{ action }} меняете на адрес без языка. Если предположение подтвердится, то что делать дальше, думаю, разберетесь

Пробовал. Нечего не поменялось, к сожалению.
В php контроллере в самом начале есть условие
if (!empty($this->request->files['file']['name']) && is_file($this->request->files['file']['tmp_name']))
если оно не выполняется то в переменную записывается сообщение об ошибке
$json['error'] = $this->language->get('error_upload');
а в js проверяется ,если есть переменная json['error'], то выводит ошибку.
Т.е. по ходу файл вообще почему то не загружается и делает редирект

Edited by comrues

Share this post


Link to post
Share on other sites
7 минут назад, comrues сказал:

Пока что понял что происходит редирект 301

698021838_2020-10-30182606.thumb.png.aa7ed9ee9c4263e3888d3d91a85f29e9.png

 

Так а что в ответе вы видите? Там же в консоле можно посмотреть что сервер отвечает

  • +1 1

Share this post


Link to post
Share on other sites

Там бы разобраться почему редирект происходит. Сначала вы обращаетесь по адресу с post-запросом, вас перенаправляет и запрос уже становится get-запросом. А при таком условии вы файл не отправите

Share this post


Link to post
Share on other sites
2 часа назад, DariyGRAY сказал:

Так а что в ответе вы видите? Там же в консоле можно посмотреть что сервер отвечает

В консоли пусто (если мы говорим про ту консоль в которой можно вывести в js через console.log).

а если смотреть, что передаётся в итоге после редиректа, то это сообщение об ошибке:

2045927853_2020-10-30204539.thumb.png.367c744029dc1699ab1f239db5d71bbf.png

Share this post


Link to post
Share on other sites
В 30.10.2020 в 18:41, DariyGRAY сказал:

Там бы разобраться почему редирект происходит. Сначала вы обращаетесь по адресу с post-запросом, вас перенаправляет и запрос уже становится get-запросом. А при таком условии вы файл не отправите

Я выяснил, что редирект происходит из-за SeoPro. Но у меня не получается разобраться как это исправить. Быть может вы мне подскажите? Заранее огромное спасибо!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By samwize
      Скачал Override Engine for OpenCart 3.x - установил
      В процессе проверки выяснилось, что для всех контроллеров Override Engine возвращает одно и тоже неправильное значение $template_name
      например:
      PHP: class addon_1_ControllerProductSearch extends ControllerProductSearch{ public function preRender( $template_buffer, $template_name, &$data ) { print($template_name);exit; } } $template_name - {theme}/template/product/buyclick_form.twig
      то же самое для ControllerProductProduct
      PHP: class addon_1_ControllerProductProduct extends ControllerProductProduct{ public function preRender( $template_buffer, $template_name, &$data ) { print $template_name;die(); return parent::preRender( $template_buffer, $template_name, $data ); } } $template_name - {theme}/template/product/buyclick_form.twig
      Помогите плз!
    • By kirians
      Вы задумывались над тем, что удобный поиск повышает конверсию Вашего магазина на 25-35%?
      Чем быстрей пользователь найдет то, что ищет, тем больше вероятность, что он останется на сайте и купит товар!
       

       
          Увеличивайте конверсии на сайте с помощью умного и быстрого поиска:
      Используйте подсказки, чтобы сделать поиск более точным Выберите поля, по которым хотите вести поиск (имя, описание, SKU, ISBN, MODEL, UPC, JAN, Meta tag, Attribute) Посмотрите историю поиска, для дальнейшей статистики и отслеживания переходов Настраиваете выводимые результаты поиска (заголовки, категории или отключите цену из выводимых параметров) С каждым новым запросом Ваш поиск будет становиться более точным Укажите количество выводимых товаров по запросу Укажите правила для отображения заголовков, картинок товара и показывайте или прячьте цену товара Подходит к любой теме используемой в вашем магазине Адаптивный на мобильных устройствах  
    • By kirians
      1 889.99 руб
      Скачать/Купить дополнение


      Ajax Live Search for Opencart (Поиск вживую)
      Вы задумывались над тем, что удобный поиск повышает конверсию Вашего магазина на 25-35%?
      Чем быстрей пользователь найдет то, что ищет, тем больше вероятность, что он останется на сайте и купит товар!
       

       
          Увеличивайте конверсии на сайте с помощью умного и быстрого поиска:
      Используйте подсказки, чтобы сделать поиск более точным Выберите поля, по которым хотите вести поиск (имя, описание, SKU, ISBN, MODEL, UPC, JAN, Meta tag, Attribute) Посмотрите историю поиска, для дальнейшей статистики и отслеживания переходов Настраиваете выводимые результаты поиска (заголовки, категории или отключите цену из выводимых параметров) С каждым новым запросом Ваш поиск будет становиться более точным Укажите количество выводимых товаров по запросу Укажите правила для отображения заголовков, картинок товара и показывайте или прячьте цену товара Подходит к любой теме используемой в вашем магазине Адаптивный на мобильных устройствах  
      Добавил kirians Добавлено 03.11.2020 Категория Поиск Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет Старая цена 0  
    • By Sunser
      Subscribe_pro  - улучшенная подписка на новости
       
      Расширение подходит и тестировалось на версиях Opencart 2.0, 2.1, 2.2, 2.3 и 3.0
      Расширение подходит и тестировалось на версиях ocStore 2.1, 2.3 и 3.0
      Данные версии CMS брались с официальных сайтов OpenCart и ocStore.
       
       
      -- Установка расширения:
      1) Зайдите в свой установщик модификаторов, в админ панели, выберите модуль нужной версии, после чего установите;
      2) После установки зайдите в модификаторы и обновите свои модификаторы;
      3) Потом перейдите в Система > Группа пользователей, там выберите свой профиль, обычно это Администратор или какой вам надо где нужен что бы модуль отображался. И в выбранном вами профиле дайте права на просмотр и изменение модуля, он там будет в списке. Или же просто нажмете выбрать все, после чего сохраните настройки. 
      Если этого не сделать, модуль не появится в меню и вы не сможете его редактировать.
      После чего модуль появится в разделе > Маркетинг > «Subscribe_pro».
      4) После этого зайдите в модули или расширения и выберите сам модуль и настройте его;
      5) После настройки модуля зайдите в раздел "Дизайн >> Макеты" и выберите страницу и место где вы хотите вывести модуль.
      -- Что может модуль:
      1. Модуль выводит на сайт форму для подписки, которую можно изменять из админки;
      2. Модуль мультиязычный, потому подстраивается под версию языка и его настройки тоже;
      3. Модуль имеет письма и свой шаблон для уведомления на email при подписке, которые можно будет изменять под себя;
      4. Модуль заполняет поле email при авторизации;
      5. Уведомления на почту пользователя при подписке;
      6. Уведомления на почту администратора при подписке;
      7. Если зарегистрированный пользователь не подписан в личном кабинете, то модуль может подписывать его;
      8. Модуль может подключать минифицированные js и ccs файлы;
      9. Следит за созданием файлов для выгрузку в exel;
      10. В модуле можно отдельно устанавливать тему письма и кому уведомлять;
      11. Модуль ведет отдельную страницу подписок, в которой можно:
       - Следить за информацией кто подписался;
       - Редактировать того, кто подписался;
       - Добавлять новые подписки с админки;
       - Фильтровать эти подписки по следующим полям:
       -- По ID;
       -- По Email;
       -- По ФИО пользователя;
       -- Авторизированный пользователь или нет;
       -- По дате;
      12. Контроль созданных файлов для выгрузки в формате exel;
      13. Удалять подписки;
      14. Очищать полностью всю базу подписок;
      15. Модуль добавляет свой пункт в раздел Почта для рассылки с сайта;
      Зачем нужен этот модуль и как он работает?
      Данный модуль создан для удобного добавления формы подписки на сайт OpenCart, в которой можно было подписывать пользователей на новости и рассылки разного типа.
      В модуле можно удобно управлять подписками, фильтровать, экспортировать ил делать по ним рассылку с пункта "Почта".
      Модуль можно выводить в разной  части сайта.

      Модуль не заменяет никаких файлов, запись своих подписок он ведет в отдельной таблице, которую создает при установке.
      В админке модуля можно задавать свои стили для модуля, так же все настройки можно менять на уровне кода под себя, если вы разработчик.
      Проблемы и исправление модуля:
      1. Вы установили модуль, обновили модификаторы, но он нигде не появился, в таком случае вам нужно в разделе «группа пользователей» дать разрешение на просмотр или изменение модуля;
      2. При скачивании exel, выдает ошибку. В таком случае может быть ошибка с правами или лучше написать автору модуля, после чего ошибку быстро исправит;
      3. При ошибке или баге пишите автору модуля, после чего в ближайшие время ошибку или баг будет поправлено;
       
      Если вы заметите какие-то неполадки или у вас будет предложение по улучшению самого модуля или вам нужно доработать модуль для личных целей, пишите в личное сообщение данного сервиса, после чего я вам обязательно отвечу.
       
      Будьте внимательные к описанию данного модуля, его характеристикам и скринов приложенным к нему перед приобретением модулям. Если же вам что-то не понятно или есть вопросы перед приобретением, можете написать автору модуля и уточнить свои вопросы к данному модулю
       
    • By Sunser
      450.00 руб
      Скачать/Купить дополнение


      Subscribe_pro - улучшенная подписка на новости
      Subscribe_pro  - улучшенная подписка на новости
       
      Расширение подходит и тестировалось на версиях Opencart 2.0, 2.1, 2.2, 2.3 и 3.0
      Расширение подходит и тестировалось на версиях ocStore 2.1, 2.3 и 3.0
      Данные версии CMS брались с официальных сайтов OpenCart и ocStore.
       
       
      -- Установка расширения:
      1) Зайдите в свой установщик модификаторов, в админ панели, выберите модуль нужной версии, после чего установите;
      2) После установки зайдите в модификаторы и обновите свои модификаторы;
      3) Потом перейдите в Система > Группа пользователей, там выберите свой профиль, обычно это Администратор или какой вам надо где нужен что бы модуль отображался. И в выбранном вами профиле дайте права на просмотр и изменение модуля, он там будет в списке. Или же просто нажмете выбрать все, после чего сохраните настройки. 
      Если этого не сделать, модуль не появится в меню и вы не сможете его редактировать.
      После чего модуль появится в разделе > Маркетинг > «Subscribe_pro».
      4) После этого зайдите в модули или расширения и выберите сам модуль и настройте его;
      5) После настройки модуля зайдите в раздел "Дизайн >> Макеты" и выберите страницу и место где вы хотите вывести модуль.
      -- Что может модуль:
      1. Модуль выводит на сайт форму для подписки, которую можно изменять из админки;
      2. Модуль мультиязычный, потому подстраивается под версию языка и его настройки тоже;
      3. Модуль имеет письма и свой шаблон для уведомления на email при подписке, которые можно будет изменять под себя;
      4. Модуль заполняет поле email при авторизации;
      5. Уведомления на почту пользователя при подписке;
      6. Уведомления на почту администратора при подписке;
      7. Если зарегистрированный пользователь не подписан в личном кабинете, то модуль может подписывать его;
      8. Модуль может подключать минифицированные js и ccs файлы;
      9. Следит за созданием файлов для выгрузку в exel;
      10. В модуле можно отдельно устанавливать тему письма и кому уведомлять;
      11. Модуль ведет отдельную страницу подписок, в которой можно:
       - Следить за информацией кто подписался;
       - Редактировать того, кто подписался;
       - Добавлять новые подписки с админки;
       - Фильтровать эти подписки по следующим полям:
       -- По ID;
       -- По Email;
       -- По ФИО пользователя;
       -- Авторизированный пользователь или нет;
       -- По дате;
      12. Контроль созданных файлов для выгрузки в формате exel;
      13. Удалять подписки;
      14. Очищать полностью всю базу подписок;
      15. Модуль добавляет свой пункт в раздел Почта для рассылки с сайта;
      Зачем нужен этот модуль и как он работает?
      Данный модуль создан для удобного добавления формы подписки на сайт OpenCart, в которой можно было подписывать пользователей на новости и рассылки разного типа.
      В модуле можно удобно управлять подписками, фильтровать, экспортировать ил делать по ним рассылку с пункта "Почта".
      Модуль можно выводить в разной  части сайта.

      Модуль не заменяет никаких файлов, запись своих подписок он ведет в отдельной таблице, которую создает при установке.
      В админке модуля можно задавать свои стили для модуля, так же все настройки можно менять на уровне кода под себя, если вы разработчик.
      Проблемы и исправление модуля:
      1. Вы установили модуль, обновили модификаторы, но он нигде не появился, в таком случае вам нужно в разделе «группа пользователей» дать разрешение на просмотр или изменение модуля;
      2. При скачивании exel, выдает ошибку. В таком случае может быть ошибка с правами или лучше написать автору модуля, после чего ошибку быстро исправит;
      3. При ошибке или баге пишите автору модуля, после чего в ближайшие время ошибку или баг будет поправлено;
       
      Если вы заметите какие-то неполадки или у вас будет предложение по улучшению самого модуля или вам нужно доработать модуль для личных целей, пишите в личное сообщение данного сервиса, после чего я вам обязательно отвечу.
       
      Будьте внимательные к описанию данного модуля, его характеристикам и скринов приложенным к нему перед приобретением модулям. Если же вам что-то не понятно или есть вопросы перед приобретением, можете написать автору модуля и уточнить свои вопросы к данному модулю
       
      Добавил Sunser Добавлено 22.04.2020 Категория Письма, почта, рассылки, sms Системные требования Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.1 OpenCart.Pro, ocShop Обращение к серверу разработчика Нет Старая цена 450  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.