2010-09-27 28 views
10

Tôi có một câu hỏi giống như trong tiêu đề - Tại sao lớp học mua sắm codeigniter không cho phép bất kỳ ký tự đặc biệt nào trong tên? Khi tôi thêm một số mục với tên bình thường chỉ chứa các ký tự chuẩn, nó hoạt động giống như nét duyên dáng. Tuy nhiên nếu tôi thêm một cái gì đó như, nói, "word/word" hoặc một cái gì đó như thế nó sẽ không thêm bất cứ điều gì vào giỏ mua hàng. Ai đó có thể cung cấp cho tôi một số gợi ý về điều đó không?Tại sao lớp học giỏ hàng codeigniter không cho phép bất kỳ ký tự đặc biệt nào trong tên?

Trả lời

20

Nếu bạn nhìn vào Cart.php bạn sẽ thấy trên dòng 31 var $product_name_rules = '\.\:\-_ a-z0-9';.

Một cách tốt đẹp để thay đổi biến này được đặt một MY_Cart.php trên ứng dụng của bạn \ thư viện \ MY_Cart.php với mã này:

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

class MY_Cart extends CI_Cart { 

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

} 

Hoặc bạn cũng có thể sửa đổi nó khi bạn thêm các sản phẩm, sử dụng :

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

Hey this works! Thx mate! – Pavel

+0

Mẹo rất hữu ích. Tôi nghĩ họ nên sửa lỗi này. – Kamil

+0

Được lưu trữ theo ngày. – David

1

Bạn cũng có thể tùy chọn chỉ cần sửa đổi các biểu thức chính quy để cho phép trích dẫn như sau:

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

Tôi chỉ tìm thấy câu hỏi này từ google trong khi phải đối mặt với cùng một vấn đề, nhưng câu trả lời ipalaus đã cung cấp không khắc phục được sự cố của tôi, bởi vì nó vẫn không cho phép greek ký tự. Sau khi một số digging tôi càng thấy điều này:

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

class MY_Cart extends CI_Cart { 

    var $product_name_rules = '\d\D'; 

} 

mà về cơ bản cho phép tất cả mọi thứ . Thưởng thức!

+0

Có! phương pháp này làm việc cho tôi với bộ ký tự utf8 trong tên sản phẩm. – Prabhu

+0

cũng làm việc cho tôi trong khi '[: print:]' chỉ hoạt động trên máy cục bộ của tôi, giải pháp của bạn cũng hoạt động trên máy chủ, cảm ơn – Nassim

0

này tất cả không giúp trên UTF8 Nhân vật (vv Serbia), nhưng tôi đã thực hiện một cái gì đó như thế nào, trước khi đưa vào sử dụng biểu đồ như thế này

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

Và sửa đổi ./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' 
); 
Các vấn đề liên quan