按名称检索类别,其中名称中包含“&”符号

时间:2013-10-23 07:07:13

标签: php magento

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

$currentCategoryModel = Mage::getModel('catalog/category')->loadByAttribute('name', 'Hello');

但是我有'&'的分类内部诸如'Cards&邀请'意味着有可能不会返回任何结果,这意味着我无法进一步操纵该类别。

为了让我能够实际插入类别名称,是否能够找到我想要的类别,是否有办法使用&符号&符号?

感谢。

3 个答案:

答案 0 :(得分:1)

根据我的经验,有一个错误或预期的行为会导致loadByAttribute方法无法与某些模型一起使用。

其中一个恰好是catalog/category模型。我建议使用load('Category name', 'name')代替loadByAttribute('name', 'Category name')

在提出此建议之前,我在包含magento 1.7的实时制作环境中测试了这两种方法,只有load有效。

答案 1 :(得分:1)

我在版本1.7中通过命名我的一个类别“Household& Items”对此进行了测试。重新运行索引后,调用以下内容将返回所需的类别:

$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") . "'";
}

答案 2 :(得分:-1)

虽然Magento没有这样的问题,但是当你得到一个......请尝试如下:

尝试使用“”代替''

如果不能正常使用

html_entity_decode(htmlentities(utf8_decode(strip_tags("name & address"))));

您还可以尝试将以下行添加到htaccess文件

AddDefaultCharset Off

另外

AddDefaultCharset UTF-8

否则

AddDefaultCharset UTF-8

尝试检查以上操作。

此致