Перейти к содержанию
Andrey1992

Как получить переменную из языкового файла и передать ее в ajax  через json? 

Рекомендуемые сообщения

есть задание, на странице корзины необходимо выводить сообщение о минимальной сумме заказа и блокировать кнопку "Заказать". Само задание я выполнил, но при изменении количества товара на самой странице корзины некорректно выводится сообщение  

-B-UkRTRgz4.thumb.jpg.9bb279d4371c6d36b628a296866a6d68.jpg

в 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? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 минут назад, Andrey1992 сказал:

в controller/quickcheckout/cart.php в функции update задаю условия для вывода предупреждения:

файл локализации, загружен до этого?

$this->load->language('quickcheckout/cart');

 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
11 минут назад, fanatic сказал:

файл локализации, загружен до этого?


$this->load->language('quickcheckout/cart');

 

все, я понял, в чем проблема) у меня файл локализации был подключен только в функции index, сейчас подключил его в функции update, все заработало) Благодарю за оперативный ответ)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.