Magento的。为什么在管理网格中,即使使用addColumnAfter,列也始终显示在最后

时间:2013-03-11 15:06:49

标签: magento

我创建了一个观察者,它在管理员的新闻稿网格中添加了一个字段,如下所示:

public function AddItemColumnToGrid($observer)
{
...
    if ($_type == 'adminhtml/newsletter_subscriber_grid') {

        $_block->addColumnAfter('subscriber_name', array(
            'header'=> Mage::helper('newsletter')->__('Name'),
            'type'  => 'text',
            'index' => 'subscriber_name',
        ), 'subscriber_email');
    }
...
}

我无法弄清楚。但是Magento总是在末尾显示我的Subscriber_name字段(作为订单中的最后一个)。 ColumnAfter不起作用。为什么?

我在讨论这件事:

        <events>
        <adminhtml_block_html_before>

1 个答案:

答案 0 :(得分:2)

这是因为在您挂钩HTML代之前就进行了排序:

<强> Mage_Adminhtml_Block_Widget_Grid:

protected function _beforeToHtml()
{
    $this->_prepareGrid();             // <-- sort columns
    return parent::_beforeToHtml();    // <-- dispatch event
}

您可以做的是在添加列后再次排序:

    $_block->addColumnAfter('subscriber_name', array(
        'header'=> Mage::helper('newsletter')->__('Name'),
        'type'  => 'text',
        'index' => 'subscriber_name',
    ), 'subscriber_email');
    $_block->sortColumnsByOrder();