Magento后台Gird列表增持Action操作。

以Newsletter Subscribers为例


第一步,模型文件里添加方法

\app\code\core\Mage\Newsletter\Model\Subscriber.php

  const STATUS_SUBSCRIBED     = 1;
    const STATUS_NOT_ACTIVE     = 2;
    const STATUS_UNSUBSCRIBED   = 3;
    const STATUS_UNCONFIRMED    = 4;

    /*2015年10月17日新增
    FDS 5
    PETS 6
    SALON 7
    DT 8
    SPORTS 9
    */
    const STATUS_FDS            = 5;
    const STATUS_PETS           = 6;
    const STATUS_SALON          = 7;
    const STATUS_DT             = 8;
    const STATUS_SPORTS         = 9;
 /**
     * @date 2015年10月22日
     * 把所有选择项归到FDS一组(设置SubscriberStatus为STATUS_FDS)
     */
    public function fds()
    {
        if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
            Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
        }

        $this->setSubscriberStatus(self::STATUS_FDS)
            ->save();
        return $this;
    }

    /**
     * @date 2015年10月22日
     * 把所有选择项归到STATUS_PETS一组(设置SubscriberStatus为 STATUS_PETS)
     */
    public function pets()
    {
        if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
            Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
        }

        $this->setSubscriberStatus(self::STATUS_PETS)
            ->save();
        return $this;
    }

    /**
     * @date 2015年10月22日
     * 把所有选择项归到SALON一组(设置SubscriberStatus为STATUS_SALON)
     */
    public function salon()
    {
        if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
            Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
        }

        $this->setSubscriberStatus(self::STATUS_SALON)
            ->save();
        return $this;
    }

    /**
     * @date 2015年10月22日
     * 把所有选择项归到DT一组(设置SubscriberStatus为 STATUS_DT)
     */
    public function dt()
    {
        if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
            Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
        }

        $this->setSubscriberStatus(self::STATUS_DT)
            ->save();
        return $this;
    }

    /**
     * @date 2015年10月22日
     * 把所有选择项归到SPORTS一组(设置SubscriberStatus为 STATUS_SPORTS)
     */
    public function sports()
    {
        if ($this->hasCheckCode() && $this->getCode() != $this->getCheckCode()) {
            Mage::throwException(Mage::helper('newsletter')->__('Invalid subscription confirmation code.'));
        }

        $this->setSubscriberStatus(self::STATUS_SPORTS)
            ->save();
        return $this;
    }

第二步:

Grid添加列

\app\code\core\Mage\Adminhtml\Block\Newsletter\Subscriber\Grid.php

大约108行

 $this->addColumn('status', array(
            'header'    => Mage::helper('newsletter')->__('Status'),
            'index'     => 'subscriber_status',
            'type'      => 'options',
            'options'   => array(
                Mage_Newsletter_Model_Subscriber::STATUS_FDS   => Mage::helper('newsletter')->__('FDS'),
                Mage_Newsletter_Model_Subscriber::STATUS_PETS   => Mage::helper('newsletter')->__('PETS'),
                Mage_Newsletter_Model_Subscriber::STATUS_SALON   => Mage::helper('newsletter')->__('SALON'),
                Mage_Newsletter_Model_Subscriber::STATUS_DT   => Mage::helper('newsletter')->__('DT'),
                Mage_Newsletter_Model_Subscriber::STATUS_SPORTS   => Mage::helper('newsletter')->__('SPORTS'),
                Mage_Newsletter_Model_Subscriber::STATUS_NOT_ACTIVE   => Mage::helper('newsletter')->__('Not Activated'),
                Mage_Newsletter_Model_Subscriber::STATUS_SUBSCRIBED   => Mage::helper('newsletter')->__('Subscribed'),
                Mage_Newsletter_Model_Subscriber::STATUS_UNSUBSCRIBED => Mage::helper('newsletter')->__('Unsubscribed'),
                Mage_Newsletter_Model_Subscriber::STATUS_UNCONFIRMED => Mage::helper('newsletter')->__('Unconfirmed'),
            )
        ));
还要添加预处理action

 protected function _prepareMassaction()
    {
        $this->setMassactionIdField('subscriber_id');
        $this->getMassactionBlock()->setFormFieldName('subscriber');

        //2015年10月22日
        $this->getMassactionBlock()->addItem('FDS', array(
            'label'        => Mage::helper('newsletter')->__('FDS'),
            'url'          => $this->getUrl('*/*/massFDS')
        ));
        //2015年10月22日
        $this->getMassactionBlock()->addItem('PETS', array(
            'label'        => Mage::helper('newsletter')->__('PETS'),
            'url'          => $this->getUrl('*/*/massPETS')
        ));
        //2015年10月22日
        $this->getMassactionBlock()->addItem('SALON', array(
            'label'        => Mage::helper('newsletter')->__('SALON'),
            'url'          => $this->getUrl('*/*/massSALON')
        ));
        //2015年10月22日
        $this->getMassactionBlock()->addItem('DT', array(
            'label'        => Mage::helper('newsletter')->__('DT'),
            'url'          => $this->getUrl('*/*/massDT')
        ));
        //2015年10月22日
        $this->getMassactionBlock()->addItem('SPORTS', array(
            'label'        => Mage::helper('newsletter')->__('SPORTS'),
            'url'          => $this->getUrl('*/*/massSPORTS')
        ));


        $this->getMassactionBlock()->addItem('unsubscribe', array(
             'label'        => Mage::helper('newsletter')->__('Unsubscribe'),
             'url'          => $this->getUrl('*/*/massUnsubscribe')
        ));

        $this->getMassactionBlock()->addItem('delete', array(
             'label'        => Mage::helper('newsletter')->__('Delete'),
             'url'          => $this->getUrl('*/*/massDelete')
        ));

        return $this;
    }
第三步:控制器中

\app\code\core\Mage\Adminhtml\controllers\Newsletter\SubscriberController.php

 /**
     * @date 2015年10月22日
     * 归到FDS一组
     */
    public function massFDSAction()
    {

        $subscribersIds = $this->getRequest()->getParam('subscriber');

        if (!is_array($subscribersIds)) {
            Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
        }
        else {
            try {
                foreach ($subscribersIds as $subscriberId) {
                    $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
                    $subscriber->fds();
                }
                Mage::getSingleton('adminhtml/session')->addSuccess(
                    Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
                );
            } catch (Exception $e) {
                Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            }
        }

        $this->_redirect('*/*/index');
    }
    /**
     * @date 2015年10月22日
     * 归到PETS一组
     */
    public function massPETSAction()
    {

        $subscribersIds = $this->getRequest()->getParam('subscriber');

        if (!is_array($subscribersIds)) {
            Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
        }
        else {
            try {
                foreach ($subscribersIds as $subscriberId) {
                    $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
                    $subscriber->pets();
                }
                Mage::getSingleton('adminhtml/session')->addSuccess(
                    Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
                );
            } catch (Exception $e) {
                Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            }
        }

        $this->_redirect('*/*/index');
    }
    /**
     * @date 2015年10月22日
     * 归到SALON一组
     */
    public function massSALONAction()
    {

        $subscribersIds = $this->getRequest()->getParam('subscriber');

        if (!is_array($subscribersIds)) {
            Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
        }
        else {
            try {
                foreach ($subscribersIds as $subscriberId) {
                    $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
                    $subscriber->salon();
                }
                Mage::getSingleton('adminhtml/session')->addSuccess(
                    Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
                );
            } catch (Exception $e) {
                Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            }
        }

        $this->_redirect('*/*/index');
    }
    /**
     * @date 2015年10月22日
     * 归到DT一组
     */
    public function massDTAction()
    {

        $subscribersIds = $this->getRequest()->getParam('subscriber');

        if (!is_array($subscribersIds)) {
            Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
        }
        else {
            try {
                foreach ($subscribersIds as $subscriberId) {
                    $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
                    $subscriber->dt();
                }
                Mage::getSingleton('adminhtml/session')->addSuccess(
                    Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
                );
            } catch (Exception $e) {
                Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            }
        }

        $this->_redirect('*/*/index');
    }
    /**
     * @date 2015年10月22日
     * 归到FDS一组
     */
    public function massSPORTSAction()
    {

        $subscribersIds = $this->getRequest()->getParam('subscriber');

        if (!is_array($subscribersIds)) {
            Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
        }
        else {
            try {
                foreach ($subscribersIds as $subscriberId) {
                    $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
                    $subscriber->sports();
                }
                Mage::getSingleton('adminhtml/session')->addSuccess(
                    Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
                );
            } catch (Exception $e) {
                Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            }
        }

        $this->_redirect('*/*/index');
    }

    public function massUnsubscribeAction()
    {

        $subscribersIds = $this->getRequest()->getParam('subscriber');

        if (!is_array($subscribersIds)) {
             Mage::getSingleton('adminhtml/session')->addError(Mage::helper('newsletter')->__('Please select subscriber(s)'));
        }
        else {
            try {
                foreach ($subscribersIds as $subscriberId) {
                    $subscriber = Mage::getModel('newsletter/subscriber')->load($subscriberId);
                    $subscriber->unsubscribe();
                }
                Mage::getSingleton('adminhtml/session')->addSuccess(
                    Mage::helper('adminhtml')->__('Total of %d record(s) were updated', count($subscribersIds))
                );
            } catch (Exception $e) {
                Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            }
        }

        $this->_redirect('*/*/index');
    }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值