2012-08-28 39 views
1

我們銷售的配置產品需要帶有字符限制的文本字段(我們銷售帶有客戶名稱的個性化手鍊)。在可配置產品中帶有重音的字符作爲兩個字符

因此,我們在我們的產品頁面上創建了一個限制15個字符的文本字段。

如果我把這個字段放在例如:「abcdefghijklmno」(它是15個字母),這是完全有效的。

但是如果我把「abcdéfghijklmno」(它仍然是15個字母,但帶有「e」尖銳),它只是不起作用,它說「請指定產品選項」。

經過幾次測試,我發現帶有重音的字母被計爲2個字符。

我該如何避免這個錯誤?

回答

0

我找到了解決辦法感謝你們太:

你必須編輯這個文件:應用程序/代碼/核心/法師/目錄/型號/產品/選項/類型/ Text.php

更換(大約49行):

if (strlen($value) == 0 && $option->getIsRequire() && !$this->getProduct()->getSkipCheckRequiredOption()) { 
      $this->setIsValid(false); 
      Mage::throwException(Mage::helper('catalog')->__('Please specify the product\'s required option(s).')); 
     } 
     if (strlen($value) > $option->getMaxCharacters() && $option->getMaxCharacters() > 0) { 
      $this->setIsValid(false); 
      Mage::throwException(Mage::helper('catalog')->__('The text is too long'));

由:

if (mb_strlen($value,'UTF-8') == 0 && $option->getIsRequire() && !$this->getProduct()->getSkipCheckRequiredOption()) { 
      $this->setIsValid(false); 
      Mage::throwException(Mage::helper('catalog')->__('Please specify the product\'s required option(s).')); 
     } 
     if (mb_strlen($value,'UTF-8') > $option->getMaxCharacters() && $option->getMaxCharacters() > 0) { 
      $this->setIsValid(false); 
      Mage::throwException(Mage::helper('catalog')->__('The text is too long'));
1

ÉÉÉ

包裝你的變量與html_entity_decode($string);

$example = html_entity_decode("abcdéfghijklmno"); 
print_r($example); 

努力學習htmlentitieshtml_entity_decode如果要更換所有acutes

你必須做一個列表,前str_replace函數它指定產品選項 url_encode

0

這很可能是字符編碼問題 - 例如UTF-8與Latin1。

你沒有提到你正在使用什麼編程語言。猜測這是一個網絡應用程序,它的可能性是PHP,您可以使用mb_strlen(其計數爲個字符)而不是strlen(其計數爲字節)。

如果不是PHP,其他編程語言具有類似的功能來計數字符而不是字節。