magento:某些类别图像设置为数组,其他设置为字符串

时间:2014-03-11 11:06:30

标签: magento

我有方法:

public function saveCategory($observer)
{
    $event      = $observer->getEvent();
    $category   = $event->getCategory();

从那里我需要收集:

$category->getThumbnail()

但我得到结果数组!! ??

我去检查$ category数据,我注意到我有这样的缩略图:

[thumbnail] => 157134.jpg

和此:

[thumbnail] => Array
            (
                [value] => 157134.jpg
            )

为什么这样?以及如何获取缩略图?

修改

这是自定义模块,这是在以下情况下触发的观察者:     catalog_category_save_commit_after

与admin部分相关联。

1 个答案:

答案 0 :(得分:0)

这是一个学术问题吗?你真的不在乎吗?您可以使用is_array($category->getThumbnail())来测试类型并采取相应的行动。

回答Stackoverflow是一个很难回答的问题,因为你没有运行核心Magento代码,是吗?我无法找到对catalog_category_save_commit_after的引用。您使用的是什么版本的Magento?

但这是一个有趣的问题。我认为缩略图的类型可以通过缩略图信息发布到Magento控制器的方式以及魔术助手和制定者的工作方式来确定。

我很难调查,因为我无法访问您的第三方模块代码。

我可以做的是分析Magento核心1.7.0.0,如果你在Magento管理员中捕获了保存类别按钮的POST,那么POST形式的类别图像名称是

Content-Disposition: form-data; name="general[image][value]"
your-image.png

如果您将用于分析adminHTML的特殊检查代码添加到controllerAction:

file:app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController.php
class: Mage_Adminhtml_Catalog_CategoryController
function: saveAction()

添加使用下面的代码来公开$ data对象的结构

public function saveAction()
{
  //...
    if ($data = $this->getRequest()->getPost()) {

      //a hack to expose the $data object in the browser
      $this->_getSession()->addError( nl2br(print_r($data,true)) );
      //and normal code resumes...          

      $category->addData($data['general']);

  //...
}

然后我们可以看到Magento正在传递结构

//...
[image] => Array
(
[value] => your-image.png
)
//...

到魔术设置器addData()所以实际上你的问题可能就是它为什么要输入String,我们希望它可能总是类型为Array,因为POST输入结构是

Content-Disposition: form-data; name="general[image][value]"
your-image.png

但我没有你的代码。您的代码正在设置密钥[Thumbnail]。要回答您的问题,您应该阅读使用表单值[thumbnail]发布到的控制器的代码,然后找到addData($data['general'])等效代码所在的位置,并且如上所述使用内置错误消息系统{{ 1}}数据,以便您可以看到它。

魔术设定器将任意数据键设置为方括号作为数组。也许当你阅读代码时,很明显为什么有时它是字符串,有时是数组。

我想知道它是否是一个类别的数组,它有一个子类别和一个没有子类别的类别的字符串