我正在撕裂我的听力,我试图通过类别的名称检索类别。我知道通常为了做到这一点,你会做:
$currentCategoryModel = Mage::getModel('catalog/category')->loadByAttribute('name', 'Hello');
但是,我有内部带有"&"的类别,例如"卡片和邀请",这意味着有可能不会返回任何结果,这意味着我无法进一步操纵该类别。
有没有办法保留与号,以便我实际插入类别名称,从而能够检索我想要的类别?
谢谢。
我已经在1.7版本中通过将我的类别之一命名为"家居和物品"来测试这一点。重新运行索引后,调用以下命令将返回所需的类别:
$currentCategoryModel = Mage::getModel('catalog/category')->loadByAttribute('name', 'Household & Items');
在将此函数追溯到它构建数据库查询的位置后,我注意到在此示例中,Zend_Db_Adapter_Abstract
类将对值使用 addcslashes
。对于您的示例来说,这应该绰绰有余。
protected function _quote($value)
{
if (is_int($value)) {
return $value;
} elseif (is_float($value)) {
return sprintf('%F', $value);
}
return "'" . addcslashes($value, "'000'n'r''''"'032") . "'";
}
根据我的经验,存在错误或预期行为,使loadByAttribute
方法无法与某些模型结合使用。
其中之一恰好是catalog/category
模型。我建议使用load('Category name', 'name')
代替loadByAttribute('name', 'Category name')
。
在提出这个建议之前,我在包含magento 1.7
的实时生产环境中测试了这两种方法,只有load
有效。
虽然Magento没有这样的问题,但是当你得到一个..请尝试如下:
尝试使用"而不是"
如果不起作用,请尝试使用
html_entity_decode(htmlentities(utf8_decode(strip_tags("name & address"))));
您也可以尝试将以下行添加到您的 htaccess 文件中
AddDefaultCharset Off
也
AddDefaultCharset UTF-8
还
AddDefaultCharset UTF-8
尝试检查上述操作。
问候