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

Разные валюты для сайта и панели администратора


Recommended Posts

Здравствуйте!

 

Решил реализовать возможность настройки валюты на сайте и в панели администратора раздельно друг от друга.

То есть на сайте только рубли, а в панели администратора рубли, доллары и евро.

Начать решил с настроек.

Добавил в таблице currency колонку admin_status.

Добавил в файл представления:

		  <!-- Поле статуса в панели администратора -->
          <div class="form-group">
            <label class="col-sm-2 control-label" for="input-status"><?php echo $entry_status_admin; ?></label>
            <div class="col-sm-10">
              <select name="admin_status" id="input-status" class="form-control">
                <?php if ($admin_status) { ?>
                <option value="1" selected="selected"><?php echo $text_enabled; ?></option>
                <option value="0"><?php echo $text_disabled; ?></option>
                <?php } else { ?>
                <option value="1"><?php echo $text_enabled; ?></option>
                <option value="0" selected="selected"><?php echo $text_disabled; ?></option>
                <?php } ?>
              </select>
            </div>
          </div>

Добавил в файл контроллера (в функцию getForm, по аналогии со стандартным полем):

if (isset($this->request->post['admin_status'])) {
			$data['admin_status'] = $this->request->post['admin_status'];
		} elseif (!empty($currency_info)) {
			$data['admin_status'] = $currency_info['admin_status'];
		} else {
			$data['admin_status'] = '';
		}

Изменил функции в файле модели (в функциях добавления и редактирования):

	public function addCurrency($data) {
		$this->db->query("INSERT INTO " . DB_PREFIX . "currency SET title = '" . $this->db->escape($data['title']) . "', code = '" . $this->db->escape($data['code']) . "', symbol_left = '" . $this->db->escape($data['symbol_left']) . "', symbol_right = '" . $this->db->escape($data['symbol_right']) . "', decimal_place = '" . $this->db->escape($data['decimal_place']) . "', value = '" . $this->db->escape($data['value']) . "', status = '" . (int)$data['status'] . "', admin_status = '" . (int)$data['admin_status'] . "', date_modified = NOW()");

		$currency_id = $this->db->getLastId();

		if ($this->config->get('config_currency_auto')) {
			$this->refresh(true);
		}

		$this->cache->delete('currency');
		
		return $currency_id;
	}

При попытке сохранения выдает ошибку:

Notice: Undefined index: admin_status in .../admin/model/localisation/currency.php on line 18Warning: Cannot modify header information - headers already sent by (output started at .../admin/controller/startup/error.php:34) in.../system/library/response.php on line 12

 

строка 18 в файле модели - это SQL команда функции редактирования

 

Очевидно, я сделал не все что нужно, но не могу понять, что упустил.

Может кто подскажет из знатоков?

Надіслати
Поділитися на інших сайтах


16 минут назад, chukcha сказал:

Достаточно только ограничить во фронте  нужную валюту

Очень хочется оставить возможность изменять доступные на сайте валюты на уровне администратора.

*Версия opencart 2.3

Надіслати
Поділитися на інших сайтах


5 минут назад, chukcha сказал:

Та не вопрос

 

Это Ваш модуль ? Не видел таких решений еще.

 

Принципиального отличия между тем что я хотел сделать и вариантом с ограничением отображаемых в витрине валют, не вижу.

 

Такие настройки все-равно нужно хранить и как-то обрабатывать.

 

Может сделать такое меню в настройках правильнее, не знаю.

Надіслати
Поділитися на інших сайтах


Да, это мой модуль

 

Отличие в том, что я ни в какие таблицы не лезу

 

Когда много разностранных магазинов, а товар один, то не надо поляку чешского языка, а чеху - польского, и валют нужно тоже ограниченное количество

 

 

Надіслати
Поділитися на інших сайтах

Ошибку нашел.

 

В файле представления записал значение атрибута "name" как "admin-status", а в контроллере пытался поймать в заголовках "admin_status".

Банальная невнимательность, как это обычно и бывает.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

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

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

Important Information

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