2010-09-27 8 views
10

Mam pytanie tak, jak w tytule - Dlaczego klasa koszyka na zakupy codeigniter nie pozwala na umieszczanie w nim żadnych znaków specjalnych? Kiedy dodaję element o zwykłej nazwie, zawierający tylko standardowe znaki, działa jak czar. Jednak jeśli dodaję coś takiego, powiedzmy "słowo/słowo" lub coś podobnego, to nic nie doda do koszyka. Czy ktoś może mi podać jakieś wskazówki?Dlaczego klasa koszyka produktu codeigniter nie zezwala na używanie w nazwie żadnego znaku specjalnego?

Odpowiedz

20

Jeśli spojrzeć na Cart.php zobaczysz na linii 31 var $product_name_rules = '\.\:\-_ a-z0-9';.

Jest to dobry sposób, aby zmienić tę zmienną jest oddanie MY_Cart.php od aplikacji bibliotek \ \ MY_Cart.php z tym kodem:

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

class MY_Cart extends CI_Cart { 

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

} 

Albo można też modyfikować go podczas dodawania produktu, stosując :

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

Hej, to działa! Thx mate! – Pavel

+0

Bardzo przydatna wskazówka. Myślę, że powinni to naprawić. – Kamil

+0

Dosłownie zapisany dzień. – David

1

można też ewentualnie tylko zmodyfikować wyrażenie regularne, aby umożliwić cytaty tak:

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

Właśnie znalazłem to pytanie z Google, gdy napotykałem ten sam problem, ale odpowiedź udzielona przez ipalaus nie naprawiła mojego problemu, ponieważ nadal nie pozwala na używanie znaków greckich. Po jakimś bardziej kopanie Znalazłem to:

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

class MY_Cart extends CI_Cart { 

    var $product_name_rules = '\d\D'; 

} 

które zasadniczo pozwala wszystko. Cieszyć się!

+0

Tak! ta metoda zadziałała dla mnie z zestawem znaków utf8 w nazwie produktu. – Prabhu

+0

pracował także dla mnie, podczas gdy "[: print:]" działał tylko na mojej lokalnej maszynie, twoje rozwiązanie działało również na serwerze, dzięki – Nassim

0

To wszystko nie pomaga na UTF8 Postacie (ETC serbski), ale zrobiłem coś takiego, przed umieszczeniem w użyciu wykresu jak ten

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

i modyfikowane ./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' 
); 
Powiązane problemy