魔扣论坛

魔扣源码论坛业务
查看: 1229|回复: 5

[经验交流] Magento创建管理列表和后台模块

[复制链接]
  • TA的每日心情

    17 小时前
  • 签到天数: 2951 天

    [LV.Master]开坛老将

    7万

    主题

    227

    回帖

    27万

    积分

    管理员

    Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

    魔扣币
    745587
    贡献
    157871
    威望
    32799

    最佳新人活跃会员热心会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2015-12-15 23:33:57 | 显示全部楼层 |阅读模式
    魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    如果你正在创建一个Magento的管理模块(学习创造Magento管理模块),那么你一定会被要求创建一个管理列表既Grid。创建列表,Magento新手程序员有点困难,但在本教程中,我们将创建一个网格在管理模块中最简单的方式。

    空间名称:Company

    模块名称:Web

    注:创建模块时必要创建XMLS(这步很简单跳过)。

    第一步:

    创建 Web/Block/Adminhtml/Web.php

    1. <?php
    2. class Company_Web_Block_Adminhtml_Web extends Mage_Adminhtml_Block_Widget_Grid_Container
    3. {
    4.   public function __construct()
    5.   {
    6.     $this->_controller = 'adminhtml_web';
    7.     $this->_blockGroup = 'web';
    8.     $this->_headerText = Mage::helper('web')->__('Item Manager');
    9.     $this->_addButtonLabel = Mage::helper('web')->__('Add Item');
    10.     parent::__construct();
    11.   }
    12. }
    复制代码

    第二步:
    创建 Web/Block/Adminhtml/Web/Grid.php

    1. <?php

    2. class Company_Web_Block_Adminhtml_Web_Grid extends Mage_Adminhtml_Block_Widget_Grid
    3. {
    4.   public function __construct()
    5.   {
    6.       parent::__construct();
    7.       $this->setId('webGrid');
    8.       $this->setDefaultSort('web_id');
    9.       $this->setDefaultDir('ASC');
    10.       $this->setSaveParametersInSession(true);
    11.   }

    12.   protected function _prepareCollection()
    13.   {
    14.       $collection = Mage::getModel('web/web')->getCollection();
    15.       $this->setCollection($collection);
    16.       return parent::_prepareCollection();
    17.   }

    18.   protected function _prepareColumns()
    19.   {
    20.       $this->addColumn('web_id', array(
    21.           'header'    => Mage::helper('web')->__('ID'),
    22.           'align'     =>'right',
    23.           'width'     => '50px',
    24.           'index'     => 'web_id',
    25.       ));

    26.       $this->addColumn('title', array(
    27.           'header'    => Mage::helper('web')->__('Title'),
    28.           'align'     =>'left',
    29.           'index'     => 'title',
    30.       ));

    31.    /*
    32.       $this->addColumn('content', array(
    33.    'header'    => Mage::helper('web')->__('Item Content'),
    34.    'width'     => '150px',
    35.    'index'     => 'content',
    36.       ));
    37.    */

    38.       $this->addColumn('status', array(
    39.           'header'    => Mage::helper('web')->__('Status'),
    40.           'align'     => 'left',
    41.           'width'     => '80px',
    42.           'index'     => 'status',
    43.           'type'      => 'options',
    44.           'options'   => array(
    45.               1 => 'Enabled',
    46.               2 => 'Disabled',
    47.           ),
    48.       ));
    49. 本文来自 嗨酷哥 原文:http://www.hicoogle.com/magento-to-create-a-list-and-background-module.html
    50.         $this->addColumn('action',
    51.             array(
    52.                 'header'    =>  Mage::helper('web')->__('Action'),
    53.                 'width'     => '100',
    54.                 'type'      => 'action',
    55.                 'getter'    => 'getId',
    56.                 'actions'   => array(
    57.                     array(
    58.                         'caption'   => Mage::helper('web')->__('Edit'),
    59.                         'url'       => array('base'=> '*/*/edit'),
    60.                         'field'     => 'id'
    61.                     )
    62.                 ),
    63.                 'filter'    => false,
    64.                 'sortable'  => false,
    65.                 'index'     => 'stores',
    66.                 'is_system' => true,
    67.         ));

    68.   $this->addExportType('*/*/exportCsv', Mage::helper('web')->__('CSV'));
    69.   $this->addExportType('*/*/exportXml', Mage::helper('web')->__('XML'));

    70.       return parent::_prepareColumns();
    71.   }

    72.     protected function _prepareMassaction()
    73.     {
    74.         $this->setMassactionIdField('web_id');
    75.         $this->getMassactionBlock()->setFormFieldName('web');

    76.         $this->getMassactionBlock()->addItem('delete', array(
    77.              'label'    => Mage::helper('web')->__('Delete'),
    78.              'url'      => $this->getUrl('*/*/massDelete'),
    79.              'confirm'  => Mage::helper('web')->__('Are you sure?')
    80.         ));

    81.         $statuses = Mage::getSingleton('web/status')->getOptionArray();

    82.         array_unshift($statuses, array('label'=>'', 'value'=>''));
    83.         $this->getMassactionBlock()->addItem('status', array(
    84.              'label'=> Mage::helper('web')->__('Change status'),
    85.              'url'  => $this->getUrl('*/*/massStatus', array('_current'=>true)),
    86.              'additional' => array(
    87.                     'visibility' => array(
    88.                          'name' => 'status',
    89.                          'type' => 'select',
    90.                          'class' => 'required-entry',
    91.                          'label' => Mage::helper('web')->__('Status'),
    92.                          'values' => $statuses
    93.                      )
    94.              )
    95.         ));
    96.         return $this;
    97.     }

    98.   public function getRowUrl($row)
    99.   {
    100.       return $this->getUrl('*/*/edit', array('id' => $row->getId()));
    101.   }

    102. }
    复制代码

    第三步:
    创建 Web/controllers/Adminhtml/WebController.php

    1. <?php

    2. class Company_Web_Adminhtml_WebController extends Mage_Adminhtml_Controller_action
    3. {

    4. protected function _initAction() {
    5.   $this->loadLayout()
    6.    ->_setActiveMenu('web/items')
    7.    ->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));

    8.   return $this;
    9. }   

    10. public function indexAction() {
    11.   $this->_initAction()
    12.    ->renderLayout();
    13. }

    14. public function editAction() {
    15.   $id     = $this->getRequest()->getParam('id');
    16.   $model  = Mage::getModel('web/web')->load($id);

    17.   if ($model->getId() || $id == 0) {
    18.    $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
    19.    if (!empty($data)) {
    20.     $model->setData($data);
    21.    }

    22.    Mage::register('web_data', $model);

    23.    $this->loadLayout();
    24.    $this->_setActiveMenu('web/items');

    25.    $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item Manager'), Mage::helper('adminhtml')->__('Item Manager'));
    26.    $this->_addBreadcrumb(Mage::helper('adminhtml')->__('Item News'), Mage::helper('adminhtml')->__('Item News'));

    27.    $this->getLayout()->getBlock('head')->setCanLoadExtJs(true);

    28.    $this->_addContent($this->getLayout()->createBlock('web/adminhtml_web_edit'))
    29.     ->_addLeft($this->getLayout()->createBlock('web/adminhtml_web_edit_tabs'));

    30.    $this->renderLayout();
    31.   } else {
    32.    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('web')->__('Item does not exist'));
    33.    $this->_redirect('*/*/');
    34.   }
    35. }
    36. 本文来自 嗨酷哥 原文:http://www.hicoogle.com/magento-to-create-a-list-and-background-module.html
    37. public function newAction() {
    38.   $this->_forward('edit');
    39. }

    40. public function saveAction() {
    41.   if ($data = $this->getRequest()->getPost()) {

    42.    if(isset($_FILES['filename']['name']) && $_FILES['filename']['name'] != '') {
    43.     try {
    44.      /* Starting upload */
    45.      $uploader = new Varien_File_Uploader('filename');

    46.      // Any extention would work
    47.               $uploader->setAllowedExtensions(array('jpg','jpeg','gif','png'));
    48.      $uploader->setAllowRenameFiles(false);

    49.      // Set the file upload mode
    50.      // false -> get the file directly in the specified folder
    51.      // true -> get the file in the product like folders
    52.      // (file.jpg will go in something like /media/f/i/file.jpg)
    53.      $uploader->setFilesDispersion(false);

    54.      // We set media as the upload dir
    55.      $path = Mage::getBaseDir('media') . DS ;
    56.      $uploader->save($path, $_FILES['filename']['name'] );

    57.     } catch (Exception $e) {

    58.           }

    59.           //this way the name is saved in DB
    60.       $data['filename'] = $_FILES['filename']['name'];
    61.    }

    62.    $model = Mage::getModel('web/web');
    63.    $model->setData($data)
    64.     ->setId($this->getRequest()->getParam('id'));

    65.    try {
    66.     if ($model->getCreatedTime == NULL || $model->getUpdateTime() == NULL) {
    67.      $model->setCreatedTime(now())
    68.       ->setUpdateTime(now());
    69.     } else {
    70.      $model->setUpdateTime(now());
    71.     }

    72.     $model->save();
    73.     Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('web')->__('Item was successfully saved'));
    74.     Mage::getSingleton('adminhtml/session')->setFormData(false);

    75.     if ($this->getRequest()->getParam('back')) {
    76.      $this->_redirect('*/*/edit', array('id' => $model->getId()));
    77.      return;
    78.     }
    79.     $this->_redirect('*/*/');
    80.     return;
    81.             } catch (Exception $e) {
    82.                 Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
    83.                 Mage::getSingleton('adminhtml/session')->setFormData($data);
    84.                 $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
    85.                 return;
    86.             }
    87.         }
    88.         Mage::getSingleton('adminhtml/session')->addError(Mage::helper('web')->__('Unable to find item to save'));
    89.         $this->_redirect('*/*/');
    90. }

    91. public function deleteAction() {
    92.   if( $this->getRequest()->getParam('id') > 0 ) {
    93.    try {
    94.     $model = Mage::getModel('web/web');

    95.     $model->setId($this->getRequest()->getParam('id'))
    96.      ->delete();

    97.     Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('Item was successfully deleted'));
    98.     $this->_redirect('*/*/');
    99.    } catch (Exception $e) {
    100.     Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
    101.     $this->_redirect('*/*/edit', array('id' => $this->getRequest()->getParam('id')));
    102.    }
    103.   }
    104.   $this->_redirect('*/*/');
    105. }

    106.     public function massDeleteAction() {
    107.         $webIds = $this->getRequest()->getParam('web');
    108.         if(!is_array($webIds)) {
    109.    Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select item(s)'));
    110.         } else {
    111.             try {
    112.                 foreach ($webIds as $webId) {
    113.                     $web = Mage::getModel('web/web')->load($webId);
    114.                     $web->delete();
    115.                 }
    116.                 Mage::getSingleton('adminhtml/session')->addSuccess(
    117.                     Mage::helper('adminhtml')->__(
    118.                         'Total of %d record(s) were successfully deleted', count($webIds)
    119.                     )
    120.                 );
    121.             } catch (Exception $e) {
    122.                 Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
    123.             }
    124.         }
    125.         $this->_redirect('*/*/index');
    126.     }

    127.     public function massStatusAction()
    128.     {
    129.         $webIds = $this->getRequest()->getParam('web');
    130.         if(!is_array($webIds)) {
    131.             Mage::getSingleton('adminhtml/session')->addError($this->__('Please select item(s)'));
    132.         } else {
    133.             try {
    134.                 foreach ($webIds as $webId) {
    135.                     $web = Mage::getSingleton('web/web')
    136.                         ->load($webId)
    137.                         ->setStatus($this->getRequest()->getParam('status'))
    138.                         ->setIsMassupdate(true)
    139.                         ->save();
    140.                 }
    141.                 $this->_getSession()->addSuccess(
    142.                     $this->__('Total of %d record(s) were successfully updated', count($webIds))
    143.                 );
    144.             } catch (Exception $e) {
    145.                 $this->_getSession()->addError($e->getMessage());
    146.             }
    147.         }
    148.         $this->_redirect('*/*/index');
    149.     }
    150. 本文来自 嗨酷哥 原文:http://www.hicoogle.com/magento-to-create-a-list-and-background-module.html
    151. }
    复制代码

    第四步:
    创建 Web/Model/Web.php

    1. <?php
    2. class Company_Web_Model_Web extends Mage_Core_Model_Abstract
    3. {
    4.     public function _construct()
    5.     {
    6.         parent::_construct();
    7.         $this->_init('web/web');
    8.     }
    9. }
    复制代码

    第五步:
    创建 Web/Model/Mysql4/Web.php

    1. <?php

    2. class Company_Web_Model_Mysql4_Web extends Mage_Core_Model_Mysql4_Abstract
    3. {
    4.     public function _construct()
    5.     {
    6.         $this->_init('web/web', 'web_id');
    7.     }
    8. }
    复制代码

    第六步:
    创建 Web/Model/Mysql4/Web/Collection.php

    1. <?php

    2. class Company_Web_Model_Mysql4_Web_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
    3. {
    4.     public function _construct()
    5.     {
    6.         parent::_construct();
    7.         $this->_init('web/web');
    8.     }
    9. }
    复制代码

    你的列表还不会出现在后台,必须要创建下面的XML文件。

    第七步:
    创建 app/design/adminhtml/default/default/layout/web.xml

    1. <?php
    2. <?xml version="1.0"?>
    3. <layout version="0.1.0">
    4.     <web_adminhtml_web_index>
    5.         <reference name="content">
    6.             <block type="web/adminhtml_web" name="web" />
    7.         </reference>
    8.     </web_adminhtml_web_index>
    9. </layout>
    复制代码

    好了,先介绍到这里,你可以下载这个文件,然后慢慢研究。


    会员购买:>> 点击购买 << | 魔扣币购买:>> 点击购买 <<
    承接业务:服务器代维丨网站托管丨SEO
    联系客服:微信:morko-net | QQ:1367681973

    该用户从未签到

    2

    主题

    256

    回帖

    514

    积分

    高级魔扣

    Rank: 4

    魔扣币
    256
    贡献
    256
    威望
    0
    发表于 2017-1-4 22:57:13 | 显示全部楼层
    非常好,顶一下

    该用户从未签到

    2

    主题

    221

    回帖

    445

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    222
    贡献
    222
    威望
    0
    发表于 2017-4-23 19:38:32 来自手机 | 显示全部楼层
    好帖必须得顶起

    该用户从未签到

    2

    主题

    252

    回帖

    506

    积分

    高级魔扣

    Rank: 4

    魔扣币
    252
    贡献
    252
    威望
    0
    发表于 2017-9-21 20:56:56 来自手机 | 显示全部楼层
    这个真是电力十足,万伏电压也不为过,看我这都外焦里嫩的了!

    该用户从未签到

    2

    主题

    261

    回帖

    524

    积分

    高级魔扣

    Rank: 4

    魔扣币
    261
    贡献
    261
    威望
    0
    发表于 2018-3-15 22:40:17 | 显示全部楼层
    我只是路过,不发表意见

    该用户从未签到

    1

    主题

    237

    回帖

    475

    积分

    中级魔扣

    Rank: 3Rank: 3

    魔扣币
    237
    贡献
    237
    威望
    0
    发表于 2018-10-3 13:45:03 来自手机 | 显示全部楼层
    山海可以阻隔彼此,却阻隔不了我的思念;距离可以拉开你我,却拉不开真挚的情谊,时间可以淡忘过去,却忘不了魔扣源码论坛永远的朋友。时光,带着美丽行走,那些过往,永远铭记。岁月为我沉淀下来的,是带着浓郁花香的美好。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 联系我们
    • 新浪微博 :
    • 在线客服 :魔扣科技 
    • 源码QQ群 :魔扣源码论坛官方总群
    • 联系邮箱 :charlin#morko.net
    • 微信扫一扫
    快速回复 返回顶部 返回列表