文档章节

magento新闻模块开发(三)

xinson
 xinson
发布于 2015/10/12 14:25
字数 485
阅读 74
收藏 1

修改Grid Block

在/app/code/local/Xinson/News/Block/Adminhtml/News/Grid.php中添加_prepareMassaction()函数

<?php

class Xinson_News_Block_Adminhtml_News_Grid extends Mage_Adminhtml_Block_Widget_Grid
{
    //...
    
    protected function _prepareMassaction()
    {
        $this->setMassactionIdField('news_id');
        $this->getMassactionBlock()->setFormFieldName('news');
        
        $this->getMassactionBlock()->addItem('delete', array(
             'label' => Mage::helper('news')->__('Delete'),
             'url' => $this->getUrl('*/*/massDelete'),
             'confirm' => Mage::helper('news')->__('Are you sure?')
        ));
        
        $statuses = Mage::getSingleton('news/news')->getStatusesOptionsArray();
        
        array_unshift($statuses, array('label'=>'', 'value'=>''));
        
        $this->getMassactionBlock()->addItem('status', array(
            'label' => Mage::helper('news')->__('Change status'),
            'url' => $this->getUrl('*/*/massStatus', array('_current'=>true)),
            'additional' => array(
                'visibility' => array(
                    'name' => 'status',
                    'type' => 'select',
                    'class' => 'required-entry',
                    'label' => Mage::helper('news')->__('Status'),
                    'values' => $statuses
                )
            )
        ));
        return $this;
    }
}

使用getStatusesOptionsArray()函数,我们在/app/code/local/Xinson/News/Model/News.php中添加

<?php

class Xinson_News_Model_News extends Mage_Core_Model_Abstract
{
    //...
    
    public function getStatusesOptionsArray()
    {
        return array(
            array(
                'label' => Mage::helper('news')->__('Enabled'),
                'value' => self::STATUS_ENABLED
            ),
            array(
                'label' => Mage::helper('news')->__('Disabled'),
                'value' => self::STATUS_DISABLED
            )
        );
    }
}

刷新后台我们将观察到在表格的顶部出现了批量选择的工具栏,在Action选择框中我们可以选择Delete和Change status,当选择Change status时选择框右边将会显示Status选择框,可以选择Enabled和Disabled,并且在每条新闻记录的左侧出现了选择框。


修改后台控制器

上面的代码中,我们使用了$this->getUrl('*/*/massDelete')和$this->getUrl('*/*/massStatus', array('_current'=>true))作为批量删除和修改的提交地址,现在我们需要在后台控制器中添加massDelete()和massStatus()方法。

修改/app/code/local/Xinson/News/controllers/Adminhtml/NewsController.php

<?php

class Xinson_News_Adminhtml_NewsController extends Mage_Adminhtml_Controller_Action
{
    //...
    public function massDeleteAction()
    {
        $newsIds = $this->getRequest()->getParam('news');
        $newsModel =  Mage::getModel('news/news');
        if(!is_array($newsIds)) {
            Mage::getSingleton('adminhtml/session')->addError(
                Mage::helper('adminhtml')->__('Please select item(s)')
            );
        } else {
            try {
                foreach ($newsIds as $newsId) {
                    $new = $newsModel->load($newsId);
                    $new->delete();
                }
                Mage::getSingleton('adminhtml/session')->addSuccess(
                    Mage::helper('adminhtml')->__(
                        'Total of %d record(s) were successfully deleted',
                        count($newsIds)
                    )
                );
            } catch (Exception $e) {
                Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
            }
        }
        $this->_redirect('*/*/index');
    }
    
    public function massStatusAction()
    {
        $newsIds = $this->getRequest()->getParam('news');
        $newsModel =  Mage::getSingleton('news/news');
        if(!is_array($newsIds)) {
            Mage::getSingleton('adminhtml/session')
                ->addError($this->__('Please select item(s)'));
        } else {
            try {
                foreach ($newsIds as $newsId) {
                        $newsModel->load($newsId)
                        ->setIsActive($this->getRequest()->getParam('status'))
                        ->setIsMassupdate(true)
                        ->save();
                }
                $this->_getSession()
                    ->addSuccess(
                        $this->__('Total of %d record(s) were successfully updated',
                            count($newsIds))
                    );
            } catch (Exception $e) {
                $this->_getSession()->addError($e->getMessage());
            }
        }
        $this->_redirect('*/*/index');
    }
}


© 著作权归作者所有

共有 人打赏支持
xinson
粉丝 15
博文 133
码字总数 29814
作品 0
广州
程序员
Magento2, 我们在等你

文章前面我要说明,Magento2.0和1.X是完全不同的两个版本.简单来说,magento2.0完全是重构的.完全的不同,彻底的不同.记住哦,这是magento贰 git获得magento2源码:https://github.com/magento/m...

蟋蟀哥哥
2011/12/16
11.1K
18
magento新闻模块开发(一)

Magento模块开发的简单示例 开发模式下开启日志记录,方便调试。 System->Developer magento/var 要开启777权限,/var/log目录下能看到(exception.log,system.log)。 模块文件 (Xinson 为P...

xinson
2015/10/12
77
0
Magento微信登陆模块 / Magento微信联合登陆 / 支持Magento 1.9.X

原文:Magento微信登陆模块,支持Magento1.9.X 关于Alipaymate 2012年以来,Alipaymate一直专注于支付宝接口开发集成,以及微信支付、网银在线、Paypal、财付通、Global Connect 国际信用卡支...

Alipaymate
2015/11/24
784
1
magento新闻模块开发(二)

Magento提供了强大的Grid Widget使我们能够方便的创建数据表格,现在我们为新闻模块创建后台数据表格。 修改config.xml配置文件,添加admin路由 <config> <admin> <routers> <news> <use>adm......

xinson
2015/10/12
93
0
Magento微信跨境支付模块V2.1发布

关于微信跨境支付(WeChat Cross-border Payment) 微信跨境支付的核心功能是实现“人民币收款,向境外商家结算外币”。微信支付已支持:英镑、港币、美元、日元、加拿大元、澳大利亚元、欧元、...

Alipaymate
2015/11/21
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Sqoop 操作实例补充

导入指定字段和指定条件的行记录 # 指定导入的字段--columns <col,col,col…># 指定过滤条件--where <where clause># 设置切分的工作单元--split-by <column-name># 目标目录存在...

PeakFang-BOK
24分钟前
2
0
App store 侵权投诉

App Store Content Dispute 侵权投诉 https://www.apple.com/legal/internet-services/itunes/appstorenotices/#?lang=zh...

壹峰
27分钟前
1
0
教程:如何在window上安装Apache HTTP Server

Apache官网只提供 Apache HTTP Server 的源代码,不提供编译好的二进制文件。 不过我们还是可以从网络上找到其他人编译好的Apache HTTP Server。 首先,从 https://www.apachehaus.com/cgi-b...

Doxde
44分钟前
1
0
中国移动蔡谦:5G传输准备就绪

目前5G已成业界热议话题,在即将到来的万物互联时代,5G是非常关键的技术。且5G相比4G,业务场景多种多样,对5G承载网带来巨大挑战。5G传输,承载先行并不仅仅是一个口号。当前5G承载网的部署...

linux-tao
52分钟前
4
0
维护“修理权”,苹果使用专有软件工具来修复MacBook Pro和iMac Pro

根据上月发给苹果授权服务提供商的一份文件,苹果公司正在使用新的专有软件诊断工具来修复MacBook Pros和iMac Pros,如果不用专有软件工具来修复关键部件,将会导致“系统失效和修复不完整”...

linuxCool
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部