0

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

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

但是,我有内部带有“&”的类别,例如“卡片和邀请”,这意味着有可能不会返回任何结果,这意味着我无法进一步操纵该类别。

有没有办法逃避&符号,以便我实际插入类别名称,从而能够检索我想要的类别?

谢谢。

4

3 回答 3

1

根据我的经验,要么存在错误,要么存在使该loadByAttribute方法无法与某些模型一起使用的预期行为。

其中之一恰好是catalog/category模型。我建议使用load('Category name', 'name')而不是loadByAttribute('name', 'Category name').

magento 1.7在提出这个建议之前,我在一个包含,的实时生产环境中测试了这两种方法load

于 2013-10-23T07:14:12.063 回答
1

我在 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") . "'";
}
于 2013-10-23T11:51:08.133 回答
-1

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

尝试使用 "" 而不是 ''

如果不工作尝试使用

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

您也可以尝试将以下行添加到您的 htaccess 文件中

AddDefaultCharset Off

AddDefaultCharset UTF-8

别的

AddDefaultCharset UTF-8

尝试检查上述操作。

问候

于 2013-10-23T07:14:10.693 回答