Pro vývoj webů už pár měsíců postupně nastazuju PHP framework CodeIgniter a při vývoji jednoho webu, kde se bude moci nakupovat, využívám třídu Cart frameworku CodeIgniter. Zatím se s ní pracuje hezky, ale zjistil jsem, že do košíku nelze vkládat určitý druh zboží. Brzy jsem ale zjistil příčinu.
Byly to právě názvy produktů s diakritikou, jak už zmiňuji v nadpise. Jak jsem se dočetl na jednom blogu: http://jefim.eu/blog/2009/12/codeigniter-cart-crap-with-cyrillic-characters/, má to jednoduchý důvod. Třída Cart má totiž při přidávání do košíku následující omezení na názvy produktů:
var $product_name_rules = '.:-_ a-z0-9';
Jako dočasné řešení se tedy jeví zakomentování dané kontroly - ve článku je vypsána kontrola, která to způsobuje - já ji mám na řádku č. 186 (ve zdrojovém kódu třídy Cart: system/libraries/Cart.php). Úpravu jsem provedl a prozatim vše funguje v pořádku.
Lepší možností by ale určitě bylo nastavení vlastního pravidla. Jeden ze způsobů napovídá jeden komentář pod výše zmíněným článkem (je nutné doplnit vlastními pravidly):
class MY_Cart extends CI_Cart {
function __construct() {
parent::CI_Cart();
$this->product_name_rules = 'VASE_PRAVIDLA';
}
}
Toto řešení jsem však prozatím nezkoušel, tak nemůžu napsat přesný návod :)