CodeIgniter Cart (košík) - problémy s diakritikou

25. 09 2011 | 01.25

codeigniterPro 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 :)