Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

-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 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.