Magento 1.9将自定义列添加到关联产品网格

时间:2018-10-11 20:26:29

标签: magento-1.9

我们有一个现有的自定义设置,当我们从1.7社区升级到1.9社区时似乎已失效。

该自定义将一列添加到关联的产品网格。

自定义是的本地替代 app / code / core / Mage / Adminhtml / Block / Catalog / Product / Edit / Tab / Super / Group.php

这是在我开始该项目之前完成的

$this->addColumn('breakdown_part_no', array(
'header'    => Mage::helper('catalog')->__('Part No'),
'name'      => 'breakdown_part_no',
'type'      => 'varchar',
'index'     => 'breakdown_part_no',
'width'     => '120px',
'editable'  => true,
 ));

这已添加到_prepareColumns()

另一个自定义项已添加到方法getSelectedGroupedProducts()

public function getSelectedGroupedProducts()
{
    $associatedProducts = Mage::registry('current_product')->getTypeInstance(true)
    ->getAssociatedProducts(Mage::registry('current_product'));
    $products = array();
    foreach ($associatedProducts as $product) {
        $products[$product->getId()] = array(
            'qty'       => $product->getQty(),
            'position'  => $product->getPosition(),
            'breakdown_part_no' => $product->getBreakdownPartNo(),
        );
}
    return $products;
}

行为是该列显示在admin中,并且可以对其进行编辑,但是在保存时,它不会保存任何值。

如果我修改getSelectedGroupedProducts部分并设置一个硬编码的值,它仍然不显示任何值(空白字段),但是有趣的是,如果单击不带任何值的保存,它将保存硬编码的值。如果我在该字段中输入任何值,它将另存为空白。这真是奇怪的行为,对我来说毫无意义。

如果我将其他字段之一(例如位置)更改为硬编码值,则它会立即显示并按预期工作。请让我知道此工作的正确方法。

1 个答案:

答案 0 :(得分:0)

各个论坛上都有关于如何执行上述操作的几篇文章,提到的修改是正确的,但其他所有文章遗漏的是adminhtml布局输入。当用户在Magento Admin(关联产品)中编辑产品数据时,数据将被序列化并发送到控制器保存操作。我注意到输入值时字段不存在。这是因为该值不在布局中,因此在将其发布到控制器之前已将其从请求中剥离。

在adminhtml / default / default / layout / catalog.xml中添加输入字段 adminhtml_catalog_product_supergroup addColumnInputName