Тема - представлять ценность для других контроллер на основе существующих кнопку "Отправить"

Тема - представлять ценность для других контроллер на основе существующих кнопку "Отправить"

08.05.2019 07:15:56 Просмотров 20 Источник

Я использую PrestaShop 1.7 и хотел бы добиться следующего :

Я добавляю причину возврата при возврате продукта, которая по умолчанию PrestaShop не имеет такой функции.

На данный момент я хотел бы получить значение из моего файла модуля TPL. Я создал выпадающий список, который позволяет пользователю выбрать свой вариант. Затем я хотел бы нажать это значение на AdminOrdersController, поскольку кнопка cancelProduct инициирует контроллер.

Модель:

public function hookDisplayAdminOrder($params)
{
    return $this->display(__FILE__, 'views/templates/admin/refund_reason.tpl');
}

TPL:

<div class="panel">
<div class="panel-heading">
    <i class="icon-money"></i>
    Pick A Reason For Refunding
</div>
<select name="refund_reason" style="width: 300px;">
  <option value="0"></option>
  <option value="1">Out of stock</option>
  <option value="2">Incorrect product sent to user</option>
  <option value="3">Defective/faulty product</option>
  <option value="4">Poor quality on receipt (dirty, poor stitching etc)</option>
  <option value="5">Looks different from image on website</option>
  <option value="6">Size does not fit user</option>
  <option value="7">Change of mind</option>
  <option value="8">No indication/Others</option>
</select>

После того, как администратор нажал кнопку возврата продукта, он инициирует следующее :

elseif (Tools::isSubmit('cancelProduct') && isset($order)) {
   // retrieve user input here
}

Я создал модуль, который использует hook hookActionProductCancel для добавления дополнительной функции, как только кнопка вызывается тоже, он отправляет обратно суммы возврата в соответствующий банк через API.

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

Для других модулей, которые я создал, форма будет действовать на контроллер модуля, и я возьму с getValue. Но в этом случае он использует существующую кнопку, и я понятия не имею, как нажать ее на AdminOrdersController.

У вопроса есть решение - Посмотреть?

Ответы - Тема - представлять ценность для других контроллер на основе существующих кнопку "Отправить" / PrestaShop - Submitting Value to Other Controller Based on Existing Submit Button

Является ответом!
Bruno Leveque

08.05.2019 08:51:40

Наиболее элегантным решением и UX-дружественным для ритейлера было бы обрабатывать пользовательский ввод с помощью вызова Ajax.

Я на самом деле разработал нечто подобное для магазина PrestaShop:

Refund example

Refund reason

Эта работа:

  1. Добавьте идентификатор в refund_reasonввода refund_reason
  2. В вашем.TPL-файл или через отдельный JS-файл, который вы включаете, используйте jQuery, чтобы поймать отправку формы, вызванную cancelProduct

  3. В вашем var input = $('<input>').attr('type', 'hidden').attr('name', 'refund_reason').val($('#refund_reason').val()); $('form').append(input);просто извлеките значение с hookActionProductCancel()или Tools::getValue('refund_reason')

https://stackoverflow.com/questions/56044994/prestashop-submitting-value-to-other-controller-based-on-existing-submit-butto/56046482#comment98734728_56046482
Я на самом деле попытался нажать(функция (), чтобы обнаружить триггер кнопки cancelProduct. но я все еще не уверен, как отправить значения. Я хотел бы вызвать возврат с причиной и записать весь продукт и количество для каждого возврата. Знаете ли вы, как я могу редактировать выпадающий раздел, когда мы нажимаем "стандартный возврат" или "возврат продуктов"? Я бы просто добавил форму там, так как я могу отправлять сообщения непосредственно на контроллер.
https://stackoverflow.com/questions/56044994/prestashop-submitting-value-to-other-controller-based-on-existing-submit-butto/56046482#comment98734786_56046482
Давайте перейдем в чат SO и опубликуем окончательное решение, как только оно заработает: chat.stackoverflow.com/rooms/192800/prestashop
https://stackoverflow.com/questions/56044994/prestashop-submitting-value-to-other-controller-based-on-existing-submit-butto/56046482#comment98734907_56046482
Конечно, давайте перейдем в чат! :)
https://stackoverflow.com/questions/56044994/prestashop-submitting-value-to-other-controller-based-on-existing-submit-butto/56046482#comment98740194_56046482
Рад, что мы смогли найти решение! Я только что обновил свой ответ с шагами, чтобы следовать