Если в product_id или product_name будет что-то отличное от латинских букв и цифр, то запрос успешно проигнорируется без каких-либо ошибок.
И такие баги я ненавижу больше всего.
Итак, чтобы починить, открываем /system/libraries/Cart.php.
В самом начале видим:
class CI_Cart { // These are the regular expression rules that we use to validate the product ID and product name var $product_id_rules = '\.a-z0-9_-'; // alpha-numeric, dashes, underscores, or periods var $product_name_rules = '\.\:\-_ a-z0-9'; // alpha-numeric, dashes, underscores, colons or periods
Добавляем "а-я" в регэксп, должно получиться так:
var $product_id_rules = '\.a-z0-9_-а-яА-Я'; var $product_name_rules = '\.\:\-_ a-z0-9а-яА-Я';Теперь переходим к методу function _insert($items = array())
Добавляем к проверке правило для уникода (буква u, после $/i).
Должно получиться так:
if ( ! preg_match("/^[".$this->product_id_rules."]+$/iu", $items['id'])) if ( ! preg_match("/^[".$this->product_name_rules."]+$/iu", $items['name']))Теперь товары с русскими буквами должны сохраняться нормально.