我有方法:
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部分相关联。
答案 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}}数据,以便您可以看到它。
魔术设定器将任意数据键设置为方括号作为数组。也许当你阅读代码时,很明显为什么有时它是字符串,有时是数组。
我想知道它是否是一个类别的数组,它有一个子类别和一个没有子类别的类别的字符串