Почему класс корзины codeigniter не позволяет использовать какой-либо специальный символ в имени?

У меня есть вопрос, как в заголовке. Почему класс корзины codeigniter не позволяет использовать какой-либо специальный символ в имени? Когда я добавляю элемент с обычным именем, содержащим только стандартные символы, он работает как шарм. Однако, если я добавлю что-то вроде, скажем, "слово/слово" или что-то подобное, он ничего не добавит в корзину покупок. Может ли кто-нибудь дать мне несколько советов по этому поводу?

Ответ 1

Если вы посмотрите на Cart.php, вы увидите строку 31 var $product_name_rules = '\.\:\-_ a-z0-9';.

Хороший способ изменить эту переменную - поместить MY_Cart.php в ваше приложение \libraries\MY_Cart.php с помощью этого кода:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Cart extends CI_Cart {

    var $product_name_rules = '[:print:]';

}

Или вы также можете изменить его при добавлении продукта, используя:

$this->cart->product_name_rules = '[:print:]';
$this->cart->insert(array());

Ответ 2

Я только что нашел этот вопрос из Google, столкнувшись с той же проблемой, но предоставленный ответ ipalaus не исправил мою проблему, потому что он по-прежнему не позволяет использовать символы греческие. После некоторого копания я нашел это:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Cart extends CI_Cart {

    var $product_name_rules = '\d\D';

}

который в основном позволяет все. Наслаждайтесь!

Ответ 3

Вы также можете просто изменить регулярное выражение, чтобы разрешить такие кавычки:

$this->cart->product_name_rules = "\.\:\-_\"\' a-z0-9";

Ответ 4

Это не помогает символам UTF8 (и т.д. сербский), но я сделал что-то вроде этого, прежде чем использовать диаграмму в качестве

$name=ucfirst(url_title(convert_accented_characters($name), ' ', TRUE));

И изменено ./application/config/foreign_chars.php

$foreign_characters = array(
    '/ä|æ|ǽ/' => 'ae',
    '/ö|œ/' => 'oe',
    '/ü/' => 'ue',
    '/Ä/' => 'Ae',
    '/Ü/' => 'Ue',
    '/Ö/' => 'Oe',
    '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ/' => 'A',
    '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/' => 'a',
    '/Ç|Ć|Ĉ|Ċ|Č/' => 'C',
    '/ç|ć|ĉ|ċ|č/' => 'c',
    '/Ð|Ď|Đ/' => 'D',
    '/ð|ď|đ/' => 'd',
    '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/' => 'E',
    '/è|é|ê|ë|ē|ĕ|ė|ę|ě/' => 'e',
    '/Ĝ|Ğ|Ġ|Ģ/' => 'G',
    '/ĝ|ğ|ġ|ģ/' => 'g',
    '/Ĥ|Ħ/' => 'H',
    '/ĥ|ħ/' => 'h',
    '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ/' => 'I',
    '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/' => 'i',
    '/Ĵ/' => 'J',
    '/ĵ/' => 'j',
    '/Ķ/' => 'K',
    '/ķ/' => 'k',
    '/Ĺ|Ļ|Ľ|Ŀ|Ł/' => 'L',
    '/ĺ|ļ|ľ|ŀ|ł/' => 'l',
    '/Ñ|Ń|Ņ|Ň/' => 'N',
    '/ñ|ń|ņ|ň|ʼn/' => 'n',
    '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/' => 'O',
    '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/' => 'o',
    '/Ŕ|Ŗ|Ř/' => 'R',
    '/ŕ|ŗ|ř/' => 'r',
    '/Ś|Ŝ|Ş|Š/' => 'S',
    '/ś|ŝ|ş|š|ſ/' => 's',
    '/Ţ|Ť|Ŧ/' => 'T',
    '/ţ|ť|ŧ/' => 't',
    '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/' => 'U',
    '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/' => 'u',
    '/Ý|Ÿ|Ŷ/' => 'Y',
    '/ý|ÿ|ŷ/' => 'y',
    '/Ŵ/' => 'W',
    '/ŵ/' => 'w',
    '/Ź|Ż|Ž/' => 'Z',
    '/ź|ż|ž/' => 'z',
    '/Æ|Ǽ/' => 'AE',
    '/ß/'=> 'ss',
    '/IJ/' => 'IJ',
    '/ij/' => 'ij',
    '/Œ/' => 'OE',
    '/š/' => 's',
    '/đ/' => 'd',
    '/č/' => 'c',
    '/ć/' => 'c',
    '/ž/' => 'z',
    '/Š/' => 'S',
    '/Đ/' => 'D',
    '/Č/' => 'C',
    '/Ć/' => 'C',
    '/Ž/' => 'Z',
    '/ƒ/' => 'f'
);