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

Получение массива переменных в языковом файле

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

Сорри, не знал куда тему опубликовать.

Немного не догоняю всю соль, с какой целью в контролёрах получают каждую переменную по отдельности и присваивают отдельно. Код получается не читабельным, я бы сказал отвратительным. Я конечно понимаю "магия" сеттеров и геттеров и так далее, но всё же.

Я вот по этому, как пример:

			$data['text_recurring_item'] = $this->language->get('text_recurring_item');
			$data['text_next'] = $this->language->get('text_next');
			$data['text_next_choice'] = $this->language->get('text_next_choice');
			$data['column_image'] = $this->language->get('column_image');
			$data['column_name'] = $this->language->get('column_name');
			$data['column_model'] = $this->language->get('column_model');
			$data['column_quantity'] = $this->language->get('column_quantity');
			$data['column_price'] = $this->language->get('column_price');
			$data['column_total'] = $this->language->get('column_total');
			$data['button_update'] = $this->language->get('button_update');
			$data['button_remove'] = $this->language->get('button_remove');
			$data['button_shopping'] = $this->language->get('button_shopping');
			$data['button_checkout'] = $this->language->get('button_checkout');

А если 100 переменных, нет 200 или 300. 

Я немножко переделал 

system/library/language.php

добавив после 

public function get($key) {
   return (isset($this->data[$key]) ? $this->data[$key] : $key);
}

вот это

	/**
	 * return all keys
	* @return array
	 */
	public function getAll() {
		return $this->data;
	}

 

В контролёрах убирается простыня из присвоений и заменяется следующим

 

			$data = array_merge($this->language->getAll(),$data);

Можно конечно ещё упростить, избавившись от array_merge();

Например так

 

			$data['language'] = $this->language->getAll();

Но тогда надо будет переделывать все шаблоны, поэтому не надо последнее

Изменено пользователем koras

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


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

а еще круче, чтоб непарить мозги

событие на load image - смотреть в код 3-ки

 

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


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

$data = $this->load->language('.../...');

 

Согласен, даже проще. Не посмотрел этот код.

 

Тогда не понимаю смысла в этой простыне в ControllerCheckoutRegister

Спойлер



		$this->load->language('checkout/checkout');

		$data['text_checkout_payment_address'] = $this->language->get('text_checkout_payment_address');
		$data['text_your_details'] = $this->language->get('text_your_details');
		$data['text_your_address'] = $this->language->get('text_your_address');
		$data['text_your_password'] = $this->language->get('text_your_password');
		$data['text_select'] = $this->language->get('text_select');
		$data['text_none'] = $this->language->get('text_none');
		$data['text_loading'] = $this->language->get('text_loading');

		$data['entry_customer_group'] = $this->language->get('entry_customer_group');
		$data['entry_firstname'] = $this->language->get('entry_firstname');
		$data['entry_lastname'] = $this->language->get('entry_lastname');
		$data['entry_email'] = $this->language->get('entry_email');
		$data['entry_telephone'] = $this->language->get('entry_telephone');
		$data['entry_fax'] = $this->language->get('entry_fax');
		$data['entry_company'] = $this->language->get('entry_company');
		$data['entry_address_1'] = $this->language->get('entry_address_1');
		$data['entry_address_2'] = $this->language->get('entry_address_2');
		$data['entry_postcode'] = $this->language->get('entry_postcode');
		$data['entry_city'] = $this->language->get('entry_city');
		$data['entry_country'] = $this->language->get('entry_country');
		$data['entry_zone'] = $this->language->get('entry_zone');
		$data['entry_newsletter'] = sprintf($this->language->get('entry_newsletter'), $this->config->get('config_name'));
		$data['entry_password'] = $this->language->get('entry_password');
		$data['entry_confirm'] = $this->language->get('entry_confirm');
		$data['entry_shipping'] = $this->language->get('entry_shipping');

		$data['button_continue'] = $this->language->get('button_continue');
		$data['button_upload'] = $this->language->get('button_upload');


 

 

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


Ссылка на сообщение
Поделиться на другие сайты
В 28.09.2017 в 22:49, chukcha сказал:

а еще круче, чтоб непарить мозги

событие на load image - смотреть в код 3-ки

 

А можно поподробней?

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


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

А можно поподробней?

посмотрите как в 3-ке подгружаются языковые переменные
 

 

В 28.09.2017 в 22:49, chukcha сказал:

событие на load image

здесь я описался
 

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


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

посмотрите как в 3-ке подгружаются языковые переменные

Я так понимаю это в этом файле system/library/language.php?

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


Ссылка на сообщение
Поделиться на другие сайты
class ControllerEventLanguage extends Controller {
	public function index(&$route, &$args) {
		foreach ($this->language->all() as $key => $value) {
			if (!isset($args[$key])) {
				$args[$key] = $value;
			}
		}
	}

 

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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