如何在Magento Admin中填充图像库窗体


how does the Image Gallery form get populated in Magento Admin

我可以看到Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()app'design'adminhtml'default'default'template'catalog'product'helper'gallery.phtml负责通过Product.Gallery原型类将图像数据放入浏览器。

然而,我无法追踪图像集合在Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content块上的设置位置。我假设它是通过控制器或布局中的某个神奇设置器实现的,但我无法追踪到它。

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()具有

$value = $this->getElement()->getValue();
        if(count($value['images'])>0) {
            foreach ($value['images'] as &$image) {

因此某些东西正在填充该块的CCD_ 6属性。

Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content似乎是由Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery::getContentHtml()实例化的,但这并没有在块上设置任何属性。

我可以看到Mage_Catalog_Model_Product_Attribute_Backend_Media::afterLoad()用一个数组填充属性,该数组与Product.Gallery Javascript所寻找的结构相匹配,但我仍然有点困惑于属性与渲染块的绑定位置。

我想我需要一张图表来让这张纠结的网在我的脑海中保持清晰!

谢谢,
Jonathan

你说;

似乎是由Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery::getContentHtml()实例化的,但这并没有在块上设置任何属性。

但是getContentHtml()看起来是这样的:

/**
 * Prepares content block
 *
 * @return string
 */
public function getContentHtml()
{
    /* @var $content Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content */
    $content = Mage::getSingleton('core/layout')
        ->createBlock('adminhtml/catalog_product_helper_form_gallery_content');
    $content->setId($this->getHtmlId() . '_content')
        ->setElement($this);
    return $content->toHtml();
}

它清楚地将$contentelement设置为$this,即Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery对象。

答案就在我面前。eav_attribute中的media_gallery属性将Mage_Catalog_Model_Product_Attribute_Backend_Media定义为其后端类,用于执行afterLoad魔术设置器。

仍然不确定Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery在产品编辑屏幕选项卡上的位置,有人知道吗?

仍然不确定Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery在产品编辑屏幕选项卡上的位置,有人知道吗?

我发现这是在Mage_Adminhtml_Block_Catalog_Product_Edit_Tabs 中完成的

查看第74行:

            $this->addTab('group_'.$group->getId(), array(
                'label'     => Mage::helper('catalog')->__($group->getAttributeGroupName()),
                'content'   => $this->_translateHtml($this->getLayout()->createBlock($this->getAttributeTabBlock(),
                    'adminhtml.catalog.product.edit.tab.attributes')->setGroup($group)
                        ->setGroupAttributes($attributes)
                        ->toHtml()),
            ));

如果你在这个代码中注释掉了,"图像"选项卡将消失。

这个画廊里有很多"魔法",我在这里打开了另一个关于它的讨论:https://stackoverflow.com/questions/11740995/how-to-include-magento-image-gallery-in-a-custom-module-backend

我希望它能有所帮助:)