Prestashop после отправки вернуться на страницу html - PullRequest
0 голосов
/ 17 октября 2019

Здравствуйте, я разрабатываю модуль под Prestashop 1.6, и я заблокирован при отправке формы.

Я добавляю в свой модуль форму с крюком «DisplayAdminOrderContentShip», который получает tpl hook_button.tpl, который отображаетмоя форма (кнопка)

relance

вот мой tpl:

<div class="panel panel-default">
<div class="panel-heading">
    <p>Export commande mecalux</p>
</div>
<div class="panel-body">
    <p>Permet de relancer l'export vers Mecalux de la commande</p>
    <form method="POST" action="#">
        <button type="submit" value="1" id="exportordersubmit" name="exportordersubmit" class="btn btn-default pull-right">
            <i class="process-icon-refresh"></i> {l s='Relancer l\'export' mod='exportorders'}
        </button>
    </form>
</div>

Вот моя функция:

public function hookDisplayAdminOrderContentShip($params)
{
    $order = new Order(Tools::getValue('id_order'));
    $status = (int)Configuration::get('EXPORTORDERS_STATUS_TRANSFERED_TO_WMS');
    $statusError = (int)Configuration::get('EXPORTORDERS_STATUS_CMD_ERROR');

    if (Tools::isSubmit('exportordersubmit')) {
        if (isset($order) && (int)$order->valid == 1) {
            if ($order->current_state != $status && $order->current_state != $statusError) {
                return;
            }
            if (!$order->valid) {
                return;
            }

            $customer = $order->getCustomer();

            $deliveryAddress = new Address($order->id_address_delivery);
            $id_country_delivery = $deliveryAddress->getCountryAndState($order->id_address_delivery);
            $iso = new Country();

            $userXml = [
                'id_client' => $customer->id,
                'email' => $customer->email,
                'livraison' => $deliveryAddress,
                'country_code_delivery' => $iso->getIsoById($id_country_delivery['id_country'])
            ];

            $dateOrder = new DateTime($order->date_add);

            $orderXml = [
                'id' => $order->id,
                'sorCode' => $order->reference,
                'payment' => $order->payment,
                'date' => $dateOrder->format('Y-m-d\TH:i:s') . 'Z',
            ];
            $result = $this->fileXml($userXml, $orderXml, $order->getProducts());

            if ((int)$result === 1) {
                $order->setCurrentState($statusError, (int)$this->context->employee->id ? (int)$this->context->employee->id : 0);
                $html = [
                    'message' => $this->displayError('Erreur de transmission au WMS'),
                ];
            } else {
                if ((int)$order->current_state !== (int)$status) {
                    $order->setCurrentState($status, (int)$this->context->employee->id ? (int)$this->context->employee->id : 0);
                    $order->wms_transfered = 1;
                    $order->save();
                    $html = [
                        'message' => $this->displayConfirmation('Transmise au WMS'),
                    ];
                }
            }
        }
    }

    $this->context->smarty->assign(
        array(
            'alert' => $html
        )
    );

    return ($this->display(__FILE__, 'views/templates/hook/hook_button.tpl'));
}

и когда я нажимаю здесь, результат моей страницы:

html

обычно это должно вернуть предупреждение на странице деталей заказа(admin) Я не понимаю, откуда моя проблема, есть идеи? Спасибо за вашу помощь.

fetch

...