Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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


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 команда функции редактирования

 

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

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

Link to post
Share on other sites

Что-то вы не туда полезли

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

Link to post
Share on other sites
16 минут назад, chukcha сказал:

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

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

*Версия opencart 2.3

Link to post
Share on other sites

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

Та не вопрос

 

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

 

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

 

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

 

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

Link to post
Share on other sites

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

 

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

 

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

 

 

Link to post
Share on other sites

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

 

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

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

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.