есть задание, на странице корзины необходимо выводить сообщение о минимальной сумме заказа и блокировать кнопку "Заказать". Само задание я выполнил, но при изменении количества товара на самой странице корзины некорректно выводится сообщение :
в language/russian/quickcheckout/cart.php у меня определена языковая переменная
$_['text_order_min'] = 'Минимальная сумма заказа: %s';
в controller/quickcheckout/cart.php в функции update задаю условия для вывода предупреждения:
if ((!$this->cart->hasProducts() && empty($this->session->data['vouchers'])) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) { $json['redirect'] = $this->url->link('checkout/cart');
} elseif ($this->cart->hasProducts() && ($this->cart->getTotal() < $this->config->get('config_order_min'))) {
$json['error_warning'] = sprintf($this->language->get('text_order_min'),$this->currency->format($this->config->get('config_order_min')));
$json['error'] = true;
} else {
$json['error'] = false;
}
в controller/quickcheckout/checkout.tpl вешаю событие на кнопку изменения количества единиц товара:
<?php if ($edit_cart) { ?>
$(document).on('click', '.button-update', function() {
$.ajax({
url: 'index.php?route=quickcheckout/cart/update',
type: 'post',
data: $('#cart1 :input'),
dataType: 'json',
cache: false,
beforeSend: function() {
$('#cart1 .button-update').prop('disabled', true);
},
success: function(json) {
if (json['redirect']) {
location = json['redirect'];
} else {
...................
if (json['error']) {
if(json['error_warning']) {
$('#warning-order').html('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error_warning'] + '</div>');
$('#button-payment-method').prop('disabled', true);
$('#button-payment-method').removeClass('orange_button');
}
} else {
$('#button-payment-method').prop('disabled', false);
$('#button-payment-method').addClass('orange_button');
$('#warning-order .alert-danger').remove();
}
}
},
<?php if ($debug) { ?>
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
<?php } ?>
});
});
если делать отладку, то получается, что в json передается объект {error_warning: "text_order_min", error: true}, и когда я в ajax пытаюсь вывести ошибку, то обращаюсь к ключу error_warning и соответственно выводится значение в виде строки "text_order_min". пробовал в файле контроллера сделать следующее:
$text_order_min = "Минимальная сумма заказа: %s";
$json['error_warning'] = sprintf($text_order_min, $this->currency->format($this->config->get('config_order_min')));
все сработало. Как мне корректно получить переменную из языкового файла и передать ее в ajax через json?