我们有一个现有的自定义设置,当我们从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部分并设置一个硬编码的值,它仍然不显示任何值(空白字段),但是有趣的是,如果单击不带任何值的保存,它将保存硬编码的值。如果我在该字段中输入任何值,它将另存为空白。这真是奇怪的行为,对我来说毫无意义。
如果我将其他字段之一(例如位置)更改为硬编码值,则它会立即显示并按预期工作。请让我知道此工作的正确方法。
答案 0 :(得分:0)
各个论坛上都有关于如何执行上述操作的几篇文章,提到的修改是正确的,但其他所有文章遗漏的是adminhtml布局输入。当用户在Magento Admin(关联产品)中编辑产品数据时,数据将被序列化并发送到控制器保存操作。我注意到输入值时字段不存在。这是因为该值不在布局中,因此在将其发布到控制器之前已将其从请求中剥离。
在adminhtml / default / default / layout / catalog.xml中添加输入字段 adminhtml_catalog_product_supergroup addColumnInputName