为什么codeigniter购物车类不允许名称中的任何特殊字符?

时间:2010-09-27 07:10:46

标签: php frameworks codeigniter

我在标题中有一个问题 - 为什么codeigniter购物车类不允许名称中包含任何特殊字符?当我添加一些普通名称仅包含标准字符的项目时,它就像魅力一样。但是,如果我添加诸如“单词/单词”之类的东西,或者类似的东西,它将不会向购物车添加任何东西。有人能为我提供一些提示吗?

5 个答案:

答案 0 :(得分:24)

如果您查看 Cart.php ,您会在第31行var $product_name_rules = '\.\:\-_ a-z0-9';上看到。

更改此变量的一个好方法是使用以下代码将MY_Cart.php放在application \ 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());

答案 1 :(得分:11)

我刚刚在面对同样的问题时从谷歌发现了这个问题,但是ipalaus提供的答案并没有解决我的问题,因为它仍然不允许希腊字符。经过一番挖掘,我发现了这个:

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

class MY_Cart extends CI_Cart {

    var $product_name_rules = '\d\D';

}

基本上允许一切。享受!

答案 2 :(得分:2)

您也可以选择修改正则表达式以允许这样的引号:

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

答案 3 :(得分:0)

这对 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'
); 

答案 4 :(得分:0)

我更改了$ product_name_safe = FALSE;在system / libraries / Cart.php上并已修复