magento模块的建立
所有路径都是从根目录开始的:
1.建立模块的配置文件:
路径:app/etc/models/下建一个文件(模块名称是Orderlottery)为Bf170_Orderlottery.xml,内容如下:
<?xml version="1.0"?>
<!--
/*
* NOTICE OF LICENSE
*/
-->
<config>
<modules>
<Bf170_Orderlottery>
<active>true</active>
<codePool>local</codePool>
</Bf170_Orderlottery>
</modules>
</config>
2.开始建立模块,建立模块需要建立几个文件夹:
路径:app/code/local/Bf170/Orderlottery/下建立模块需要的文件夹:
1>Block
2>controllers
3>etc
4>Helper
5>Model
6>sql
文件夹建立好之后开始对模块orderlottery建配置文件adminhtml.xml和config.xml:
首先对config.xml文件来配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--
* NOTICE OF LICENSE
*
-->
<config>
<modules>.................................................................................................模块
<Bf170_Orderlottery>.............................................................................模块版本
<version>1.0.0</version>
</Bf170_Orderlottery>
</modules>
<global>....................................................................................................全局
<helpers>..............................................................................................辅助功能
<orderlottery>
<class>Bf170_Orderlottery_Helper</class>
</orderlottery>
</helpers>
<blocks>..............................................................................................页面block
<orderlottery>
<class>Bf170_Orderlottery_Block</class>
</orderlottery>
</blocks>
<models>.............................................................................................表对象
<orderlottery>
<class>Bf170_Orderlottery_Model</class>......................................表对象类
<resourceModel>orderlottery_mysql4</resourceModel>....................表对象资源
</orderlottery>
<orderlottery_mysql4>
<class>Bf170_Orderlottery_Model_Mysql4</class>
<entities>
<item>
<table>orderlottery_item</table>
</item>
</entities>
</orderlottery_mysql4>
</models>
<resources>.......................................................................................资源
<orderlottery_setup>
<setup>
<module>Bf170_Orderlottery</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</orderlottery_setup>
<orderlottery_write>.......................................................................可写
<connection>
<use>core_write</use>
</connection>
</orderlottery_write>
<orderlottery_read>.......................................................................可读
<connection>
<use>core_read</use>
</connection>
</orderlottery_read>
</resources>
<events>.........................................................................................加载的事件(事件放在不同位置,使用的地方也不一样,可放admin,global,frontend)
<events/>
</global>
<frontend>..........................................................................................前台
<routers>
<orderlottery>
<use>standard</use>
<args>
<module>Bf170_Orderlottery</module>
<frontName>orderlottery</frontName>
</args>
</orderlottery>
</routers>
<layout>.........................................................................................这个模块所加载的模板
<updates>
<orderlottery module="Bf170_Orderlottery">
<file>orderlottery.xml</file>
</orderlottery>
</updates>
</layout>
</frontend>
<adminhtml>.........................................................................................后台
<!-- 相应的adminhtml定义挪到了adminhtml.xml -->
</adminhtml>
<admin>
<routers>
<orderlottery_adminhtml>
<use>admin</use>
<args>
<module>Bf170_Orderlottery_Adminhtml</module>
<frontName>orderlottery_adminhtml</frontName>
</args>
</orderlottery_adminhtml>
</routers>
</admin>
</config>
现在对adminhtml.xml文件来配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!--
* NOTICE OF LICENSE
*
-->
<config>
<menu>...........................................................................................................后台菜单
<orderlottery translate="title" module="orderlottery">......................................这里名称自定义
<title>后台插件练习</title>..........................................................................菜单名称
<sort_order>9999</sort_order>...............................................................位置
<children>
<item_index translate="title" module="orderlottery">...............................主菜单的子菜单
<title>信息查询</title>
<sort_order>100</sort_order>
<action>orderlottery_adminhtml/item/index</action>..........................点击所访问的路径
</item_index>
</children>
</orderlottery>
</menu>
<acl>..............................................................................................................权限
<resources>
<admin>
<children>
<orderlottery translate="title" module="orderlottery">
<title>后台插件练习</title>
<sort_order>120</sort_order>
<children>
<manage translate="title">
<title>管理</title>
<sort_order>0</sort_order>
</manage>
</children>
</orderlottery>
</children>
</admin>
</resources>
</acl>
</config>
把以上两个文件配置完成之后你就可以到后台看到这个模块就已经启动了,菜单也会加载出来.
3.现在接下来就是对这个模块的"表"对象进行建立了.
在建立表之前先需要建几个文件(就是这张表对象,這张表名是orderlottery_item)
1> 需要在Model這个文件夹里建文件夹 Mysql4和文件Item.php(Item.php的内容如下)
<?php
/*
* NOTICE OF LICENSE
*/
class Bf170_Orderlottery_Model_Item extends Mage_Core_Model_Abstract {
// 如果需要相应的事件相应逻辑
protected $_eventPrefix = 'orderlottery_item';
//=============== Internal Processing (automatic) ============= //
protected function _construct() {
// 指向相应的 Resource (Model)
$this->_init('orderlottery/item');
}
// 一般在保存前,赋予更新时间(初次保存,赋予创建时间)
protected function _beforeSave() {
parent::_beforeSave();
//For new object which does not specify 'created_at'
if(!$this->getId() && !$this->getData('created_at')){
$this->setData('created_at', now());
}
//Always specify 'updated_at'
$this->setData('updated_at', now());
return $this;
}
2> 在Mysql4文件里建好Item文件夹和文件Item.php,内容如下:
<?php
/*
* NOTICE OF LICENSE
*/
class Bf170_Orderlottery_Model_Mysql4_Item extends Mage_Core_Model_Mysql4_Abstract {
// 指向相应的 Table以及Primary ID
protected function _construct() {
$this->_init('orderlotteryt/item', 'entity_id');
}
}
3> 在Item文件夹里建好Collection.php,内容如下:
<?php
/*
* NOTICE OF LICENSE
*/
class Bf170_Orderlottery_Model_Mysql4_Item_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
public function _construct() {
$this->_init('orderlottery/item');
}
}
4> 在sql文件夹里建立文件夹orderlottery_setup,再在orderlottery_setup这个文件夹里建一个文件mysql4-install-1.0.0.php,这个文件内容如下:
<?php
/*
* NOTICE OF LICENSE
*/
$installer = $this;
$installer->startSetup();
$installer->run("
-- DROP TABLE IF EXISTS {$this->getTable('orderlottery_item')};
CREATE TABLE {$this->getTable('orderlottery_item')} (
`entity_id` int(10) unsigned NOT NULL auto_increment COMMENT 'Entity ID',
`product_id` int(10) unsigned COMMENT 'Product ID',
`price` decimal(12, 4) COMMENT 'Price',
`name` varchar(255) COMMENT 'Name',
`status` smallint(5) unsigned COMMENT 'Status',
`created_at` timestamp NULL COMMENT 'Created At',
`updated_at` timestamp NULL COMMENT 'Updated At',
PRIMARY KEY (`entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='这张表的注释';
");
$installer->endSetup();
未完待续。。。。。
magento模块的建立的更多相关文章
- Magento模块升级修改数据库表结构
Magento支持在模块中创建.删除.更新数据库表及字段.通过该方式,在插件开发的过程中,添加和修改字段变成了一件非常轻松的事情.只需要修改模块的版本号,同时在文件中添加一个符合命名规则的脚本就可以了 ...
- Drupal 7 模块开发 建立模块帮助信息(hook_help)
建立模块请參考 <Drupal 7 模块开发 建立> 假设你要支持中文,文件格式必须保存为 UTF-8.NO BOM ------------------------------ hook ...
- Magento 模块开发之DispatchEvent
在这一章节中.我们来了解 Magento 中的事件分发机制 Mage::dispatchEvent() 在创建自己的模块时, Event 事件的分发将会变成十分实用且有效 以个人的经验. 事件的分发使 ...
- 如何创建magento模块z之Hello World例子(转)
步骤:1.创建一个Hello World模块2.为这个模块配置路由3.为这个模块创建执行控制器 创建Hello World模块 创建模块的结构目录:app/core/local/Sjolzy/Hell ...
- Magento开发文档(一):Magento入门
开始之前,首先声明下,Magento开发者手册由Alan Storm发表在Magento官方网站上.总共分八个部分,由浅入深的介绍了Magento的MVC架构及Magento中使用的比较特殊的EAV模 ...
- Magento 使用心得
Modules->模块 Controller->控制器 Model->模型 Magento是这个星球上最强大的购物车网店平台.当然,你应该已经对此毫无疑问了.不过,你可能还不知道,M ...
- Magento入门开发教程
Modules->模块 Controller->控制器 Model->模型 Magento是这个星球上最强大的购物车网店平台.当然,你应该已经对此毫无疑问了.不过,你可能还不知道,M ...
- Magento强大的配置系统
Magento的配置系统就像是Magento的心脏,支撑着Magento的运行.这套配置系统掌管着几乎所有"module/model/class/template/etc".它把整 ...
- Magento WebServices SOAP API 创建和使用
首先 SOAP 简介: http://baike.baidu.com/view/1695890.htm?fromtitle=SOAP 然后简单介绍下Magento API.Magento API干啥用 ...
随机推荐
- 功能和形式的反思sql声明 一个
日前必须使用sql语句来查询数据库 但每次你不想写一个数据库中读取所以查了下反射 我想用反映一个实体的所有属性,然后,基于属性的查询和分配值 首先,须要一个实体类才干反射出数据库相应的字段, 可是開始 ...
- 异步陷阱之IO
异步陷阱之IO篇 很多教程和资料都强调流畅的用户体验需要异步来辅助,核心思想就是保证用户前端的交互永远有最高的优先级,让一切费时的逻辑通通放到后台,等到诸事完备,通知一下前端给个提示或者继续下一步.随 ...
- GridView中的编辑和删除按钮,执行更新和删除代码之前的更新提示或删除提示
在GridView中,可以通过设计界面GridViewr任务->编辑列->CommandField,很简单的添加的编辑和删除按钮 在前台源码中,可以看到GridView自动生成了两个列. ...
- cocos2d-x3.2中将XCode发展project转移到VS2010可能会发生错误
一些代码在线xcode写.我们希望我们自己的屌丝vs上述的实施,要重新构建它project,然后加载.但是绝对 没想到在VS里新建project再加入文件,编译后出现了好多错误.以下就把解决这些错误的 ...
- 一步一步实现基于Task的Promise库(二)all和any方法的设计和实现
在上一篇中我们已经初步完成了Task类,如果仅仅是这些,那么没有多大意义,因为网上这类js库有很多,现在我们来些更复杂的使用场景. 如果我们现在有这样一个需求:我们要先读取aa.txt的内容,然后去后 ...
- Linq to sql与EF零碎知识点总结
------------------------------第一天(2013-3-25) 1.ado.net实体模型,(Ef) 2.创建上下文对象: 调用相应方法,最后调用.savechanges() ...
- ASP.NET MVC 例子演示如何在 Knockout JS 的配合下,使用 TypeScript 。
一个简单的 ASP.NET MVC 例子演示如何在 Knockout JS 的配合下,使用 TypeScript . 前言 TypeScript 是一种由微软开发的自由和开源的编程语言.它是JavaS ...
- SolrCloud攻略
SolrCloud攻略 近期一直在使用SolrCloud,乘着酒醉大概总结一下. 1.安装 原来一直有个误区,认为SolrCloud启动时,必须至少有个core才可以,其实不然. 首先按照Solr官方 ...
- 如何将 Area 中的 Controller 放到独立的程序集?
目录 背景如何将 Area 中的 Controller 放到独立的程序集?备注 背景返回目录 本文假设您已经熟悉了 ASP.NET MVC 的常规开发方式.执行模型和关键扩展点,这里主要说一下如何使用 ...
- HDU 4618 - Palindrome Sub-Array(2013MUTC2-1008)(DP)
d(i,j,k)表示左上角坐标为(i,j),k为正方形边长 d(i,j,k)=1,如果d(i+1,j+1,k-2)=0,且上下两个外围的相等且回文,左右两个外围的相等且回文:否则d(i,j,k)=0 ...