На сайте есть 2 языка: ENG, RU. Допустим, есть заказ с суммой 50.
При смене языка на ENG — поменяется только символ валюты:
Язык RU => 50₽.
Язык ENG => $50.
А нужно конвертировать валюту по курсу заданную в настройках, чтобы было так:
Язык RU => 50₽.
Язык ENG => $0.86.
В документации интернационализации, форматтера и нескольких вариаций в запросе Google не нашел никакой информации.
Из идей повесить конвертацию на `afterFind`, но неизвестно к каким побочным эффектам это приведёт. Может кто поделиться опытом?
Как конвертировать валюту при смене языка в Yii2?
-
- Сообщения: 14
- Зарегистрирован: 2022.02.11, 17:42
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Как конвертировать валюту при смене языка в Yii2?
Этого в фреймворке нет. Самим нужно реализовывать.
Нравится Yii? Давайте сделаем его лучше!.
-
- Сообщения: 14
- Зарегистрирован: 2022.02.11, 17:42
Re: Как конвертировать валюту при смене языка в Yii2?
Понимаю.
-------
На реализации получился такой подход:
В динамике:
https://i.imgur.com/6gu6PTb.png
Аналогичное на JS:
Динамика:
-------
На реализации получился такой подход:
В динамике:
https://i.imgur.com/6gu6PTb.png
Аналогичное на JS:
Динамика:
- proctoleha
- Сообщения: 298
- Зарегистрирован: 2016.07.10, 19:00
Re: Как конвертировать валюту при смене языка в Yii2?
Как говорит уважаемый Дмитрий Елисеев - давайте просто проговорим этот процесс на обычном языке, а уже потом будет воплощать это в коде.
1. Посетитель нажал кнопку смены языка. Это событие. Мы можем повесить на него триггер и как-то это событие обрабатывать. Самое простое, что приходит на ум - где-то в кеше, в сессии, или еще где сохранить примитивный DTO
locale:
language - EN
symbol - $
коэффициент - 0.5
Как будет этот триггер отрабатывать - дело второе. Главное, что на входе ему поступает локаль, отрабатывает какая-то фабрика, и где-то сохраняются данные в том, или ином виде
2. При выводе продуктов на странице в нужной валюте, мы говорим тоже какому-то классу: дай нам стоимость такого-то продукта. Этот класс смотрит: а что у нас по локали в кеше, сессии, или еще где-то? Нет ничего? Записываем локаль по умолчанию, конвертируем цены, отдаем результат.
А вот как реализовать это в коде, зависит от проекта. Может у вас будет другая логика. Но, в любом случае важно разделять сущности.
1. Посетитель нажал кнопку смены языка. Это событие. Мы можем повесить на него триггер и как-то это событие обрабатывать. Самое простое, что приходит на ум - где-то в кеше, в сессии, или еще где сохранить примитивный DTO
locale:
language - EN
symbol - $
коэффициент - 0.5
Как будет этот триггер отрабатывать - дело второе. Главное, что на входе ему поступает локаль, отрабатывает какая-то фабрика, и где-то сохраняются данные в том, или ином виде
2. При выводе продуктов на странице в нужной валюте, мы говорим тоже какому-то классу: дай нам стоимость такого-то продукта. Этот класс смотрит: а что у нас по локали в кеше, сессии, или еще где-то? Нет ничего? Записываем локаль по умолчанию, конвертируем цены, отдаем результат.
А вот как реализовать это в коде, зависит от проекта. Может у вас будет другая логика. Но, в любом случае важно разделять сущности.
Вот за что я не люблю линукс, так это за свои кривые, временами, руки