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

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

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

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

 

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

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

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

Добавил в таблице 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

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


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

Та не вопрос

2434504742.png

 

 

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


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

Та не вопрос

 

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

 

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

 

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

 

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

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


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

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

 

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

 

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

 

 

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


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

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

 

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

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

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


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

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

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

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

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

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

Войти

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

Войти

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

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

×

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

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