2010-09-27 18 views
10

Tengo una pregunta como en el título: ¿Por qué la clase de carrito de compras codeigniter no permite ningún carácter especial en el nombre? Cuando estoy agregando un elemento con un nombre normal que solo contiene caracteres estándar, funciona como un amuleto. Sin embargo, si agrego algo como, por ejemplo, "palabra/palabra" o algo así, no agregará nada al carrito de compras. ¿Alguien puede darme algunos consejos sobre eso, por favor?¿Por qué la clase de carrito de compras codeigniter no permite ningún carácter especial en el nombre?

Respuesta

20

Si mira en Cart.php, verá en la línea 31 var $product_name_rules = '\.\:\-_ a-z0-9';.

Una buena manera de cambiar esta variable es poner un MY_Cart.php en sus bibliotecas de aplicaciones \ \ MY_Cart.php con este código:

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

class MY_Cart extends CI_Cart { 

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

} 

o también puedes modificarlo cuando se agrega el producto, utilizando :

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

¡Esto funciona! Thx mate! – Pavel

+0

Consejo muy útil. Creo que deberían arreglar esto. – Kamil

+0

Literalmente salvó el día. – David

1

puede también opcionalmente basta con modificar la expresión regular para permitir que las cotizaciones de este modo:

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

Acabo de encontrar esta pregunta de google mientras me enfrento al mismo problema, pero la respuesta proporcionada por ipalaus no solucionó mi problema, porque aún no permite caracteres griegos. Después de un poco más de excavación encontré esto:

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

class MY_Cart extends CI_Cart { 

    var $product_name_rules = '\d\D'; 

} 

que básicamente permite que todo . ¡Disfrutar!

+0

¡Sí! este método funcionó para mí con el conjunto de caracteres utf8 en el nombre del producto. – Prabhu

+0

funcionó para mí también cuando el '[: imprimir:]' funcionaba solo en mi máquina local, su solución también funcionó en el servidor, gracias – Nassim

0

Todo esto no ayuda en UTF8 Caracteres ( etc Serbia), pero he hecho algo como, antes de poner en uso cuadro como el

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

y modificado ./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' 
); 
Cuestiones relacionadas