按名称检索类别,其中名称包含与号


Retrieving category by name where name has ampersand inside

我正在撕裂我的听力,我试图通过类别的名称检索类别。我知道通常为了做到这一点,你会做:

$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

尝试检查上述操作。

问候