Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Как получить переменную из языкового файла и передать ее в 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? 

Link to post
Share on other sites

14 минут назад, Andrey1992 сказал:

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

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

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

 

  • +1 1
Link to post
Share on other sites
11 минут назад, fanatic сказал:

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


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

 

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.