文档章节

magento新闻模块开发(三)

xinson
 xinson
发布于 2015/10/12 14:25
字数 485
阅读 76
收藏 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
博文 135
码字总数 30457
作品 0
广州
程序员
私信 提问
Magento2, 我们在等你

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

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

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

xinson
2015/10/12
77
0
magento新闻模块开发(二)

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

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

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

Alipaymate
2015/11/24
784
1
Magento微信跨境支付模块V2.1发布

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

Alipaymate
2015/11/21
0
1

没有更多内容

加载失败,请刷新页面

加载更多

《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
8分钟前
0
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
25分钟前
1
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
1
0
HashTable和Vector为什么逐渐被废弃

HashTable,不允许键值为null,还一个就是put方法使用sychronized方法进行线程同步,单线程无需同步,多线程可用concurren包的类型。 如编程思想里面说的作为工具类,封闭性做的不好没有一个...

noob_chr
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部