magento可编辑网格列值未使用massaction发布

时间:2012-10-09 07:11:45

标签: magento grid

我想使用massaction编辑gridview产品值。在这里我创建了一个这样的列。

$this->addColumn('fineness',
            array(
                'header'=> Mage::helper('catalog')->__('% Increase'),
                'width' => '80px',
                'index' => 'fineness',
                'type' => 'input',
                'editable' => 'TRUE',


        ));

它工作正常,但我怎样才能将这些价值发布到按摩?在这里我写了这样的动作

$this->getMassactionBlock()->addItem('update', array(
             'label'=> Mage::helper('catalog')->__('Bulk Update'),
             'url'  => $this->getUrl('*/*/massUpdate'),
             'confirm' => Mage::helper('catalog')->__('Are you sure?'),

        ));

那么如何才能在massaction中获得列值。在我这样写的动作中却没有工作

public function massUpdateAction()
    {
        $productIds = $this->getRequest()->getParam('product');
        $increase_fineness = $this->getRequest()->getParam('increase_fineness');
        $fineness = $this->getRequest()->getParam('fineness');
        print_r($fineness);die;
}

1 个答案:

答案 0 :(得分:0)

我认为你可以采用更简单的解决方案:
只需为massaction表单创建自己的模板,然后在那里更改onclick事件(或为submit事件添加自己的监听器)。
这里的想法是使用您自己的JS代码(您可以在新的.phtml中包含它),在提交之前使用您的自定义信息向massaction表单添加一些输入。

//这将在你的网格内(你现在可能有这个方法,因为你应该在这里添加按摩项目:

protected function _prepareMassaction()
{

        // you can use widget/grid/massaction.phtml as a reference
        $this->getMassactionBlock()->setTemplate('your_custom_template_here.phtml');
                ...

作为旁注,这是(基本上)按摩形式如何运作:
当您选择输入复选框时,它将在按摩表单上创建一个输入元素,此输入将包含所选行的ID,以逗号分隔。
然后Magento有一个观察者(听“adminhtml_controller_action_predispatch_start”)

Mage_Adminhtml_Model_Observer::massactionPrepareKey

将逗号分隔值转换为数组,这就是您在massaction Action中接收所选项目数组的方式。