shopex二次开发设计加上库房控制模块编码共享

这儿详细介绍的是shopex加上一个库房控制模块,这里只详细介绍库房的管理方法,其实不涉及到库房与产品的融合一部分

一、实际效果浏览1.在 产品 莱单栏中加上 库房 的莱单组:

2.库房目录:

3.加上/编写库房


二、加上莱单及建立数据信息表1.构思

1)由于后台管理的莱单是数据加密了,在网上有根据客户自定文件目录的方法来加上后台管理莱单,但是讲得不足详尽,没试取得成功=.=

因此我立即改动后台管理莱单的php,文档相对路径为:core\include_v5\adminSchema.php


应用 dezender专用工具将这一文档解密。这儿顺便说一下解密,如图所示:


挑选 解密核心3 ,经检测,别的2个也不能一切正常解密php文档。

解密后的 adminSchema.php 文档中,有一个 $menu['goods'] 的数字能量数组,这一便是后台管理的 产品 莱单组了。

随后我还在 产品 管理方法这一个莱单组后边加上 库房管理方法 ,以下:


拷贝编码编码以下:
array( "type" = "group", "label" = __( "库房管理方法" ),
"items" = array(
array(
"type" = "menu", 、
"label" = __( "库房目录" ),
"link" = "index.php?ctl=goods/warehouse act=index" ),
array(
"type" = "menu",
"label" = __( "加上库房" ),
"link" = "index.php?ctl=goods/warehouse act=addNew")
)
)



在其中 type= group 表明它是一个莱单组,items 便是里边的子莱单。type= menu 便是一个能够点一下的莱单,假如加上target= _blank 特性,便会以新开业对话框的方式开启莱单连接。

2.提前准备数据信息库


拷贝编码编码以下:
DROP TABLE IF EXISTS `hx_warehouse`;
CREATE TABLE `hx_warehouse` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL,
`information` varchar(255) DEFAULT NULL,
`disabled` enum('true','false') CHARACTER SET utf8 DEFAULT 'false',
`data0` varchar(255) DEFAULT NULL,
`data1` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=gbk;

这儿并沒有应用 shopex 里边的作为前缀。

三、加上Model层

shopex 也是应用MVC层次构造,在其中实体模型层坐落于:core/model 和 core/model_v5 这2个文档夹,_v5 便是php的版本号在5之上时应用。

这儿的库房控制模块归属于于产品,因此我还在 core/model_v5/goods 下在建一个 mdl.warehouse.php,留意取名文件格式,要不然没法被查找到这一model。

里边为 mdl_warehouse 类,承继于 shopObject。还可以承继于 modelFactory,由于shopObject 也是modelFactory的子类。

假如针对 实体模型层这儿并不是很掌握,能够解密别的的 mdl 文档看来看她们的构造。

下边是库房实体模型类:

拷贝编码编码以下:
?php
/*********************/
/* */
/* Dezend for PHP5 */
/* NWS */
/* Nulled.WS */
/* */
/*********************/ /p p include_once( "shopObject.php" );
class mdl_warehouse extends shopObject
{ /p p public $idColumn = "id";
public $adminCtl = "goods/brand";
public $textColumn = "rmation,data0";
public $defaultCols = "rmation,data0";
public $tableName = "hx_warehouse";

public function getHouseById($nLvId){
$aTemp = array( );
$aTemp = $this- db- select( "SELECT rmation,data0 FROM hx_warehouse WHERE id=".$nLvId);
return $aTemp;
} /p p public function deleteById($id){
$sql = "delete from hx_warehouse where id=".$id;
return $this- db- exec( $sql );
}

public function insertHouse($data){
$aRs = $this- db- query( "SELECT * FROM hx_warehouse WHERE id=0" );
$sSql = $this- db- getInsertSql( $aRs, $data );
return !$sSql || $this- db- query( $sSql );
}

public function updateHouse($aData){
$id = $aData['id'];

$sql ="update hx_warehouse set name='".$aData['name']."' , information='".$aData['information']."'";
$sql.=" , data0='".$aData['data0']."' where id=".$id;

return $this- db- query( $sql );
} /p p } /p p ?

四、加上操纵层

后台管理的controller坐落于:core\admin\controller

一样地,大家在 goods 这一文件目录下在建 ctl.warehouse.php

类中有2个特性:

拷贝编码编码以下:
var $workground = 'goods'; /p p var $object = 'goods/warehouse';//实体模型精准定位

编码以下:


拷贝编码编码以下:
?php
include_once('objectPage.php'); /p p class ctl_warehouse extends objectPage { /p p var $workground = 'goods';
var $object = 'goods/warehouse';

public function index(){
$houses = $this- system- loadModel('goods/warehouse');
$list = $houses- getList();

$this- pagedata['list']= $list;
$this- pagedata['house_count']=$houses- count();
$this- page('product/');
}

public function addNew(){
$this- page('product/');
}

public function edit($id){
$houses = $this- system- loadModel('goods/warehouse');
$house = $houses- getHouseById($id);

$this- pagedata['house'] = $house[0];
$this- page('product/');
}

public function deleteDo($id){
$this- begin('index.php?ctl=goods/warehouse act=index');
$houses = $this- system- loadModel('goods/warehouse');

if($houses- deleteById($id)){
$this- end(true,__('库房删掉取得成功'));
}else{
$this- end(false,__('库房删掉不成功'));
}
}

public function addDo(){
if(empty($_POST['name'])){
$this- splash('failed','index.php?ctl=goods/warehouse act=index',__('请键入库房名字'));
exit;
}

$houses = $this- system- loadModel('goods/warehouse');

if(empty($_POST['id'])){
$info = "加上";
$r = $houses- insertHouse($_POST);
}else{
$info = "改动";
$r = $houses- updateHouse($_POST);
}


if($r)
$this- splash('success','index.php?ctl=goods/warehouse act=index',__($info.'库房取得成功'));
else
$this- splash('failed','index.php?ctl=goods/warehouse act=index',__($info.'库房不成功'));
}

/**
* 设定产品库房
* @param unknown_type $id
*/
public function count($id,$goodsName){
$houses = $this- system- loadModel('goods/warehouse');
$list = $houses- getLogList($id);

$this- pagedata['gid'] = $id;
$this- pagedata['houses'] = $list;
$this- pagedata['goodsName'] = $goodsName;

$this- singlepage('product/');
}

public function countDo($gid){
$this- begin('index.php?ctl=goods/product act=index');

$houses = $this- system- loadModel('goods/warehouse');
$list = $houses- getList();

foreach ($list as $key = $h){
if(empty($_POST['count_'.$h['id']]))
$size = 0;
else
$size = $_POST['count_'.$h['id']];
$list[$key]['size'] = $size;
}

if($houses- updateHouseCount($gid, $list)){
$this- end(true,__('库房库存量改动取得成功,请关掉此对话框'));
}else{
$this- end(false,__('库房库存量改动不成功,请关掉此对话框'));
}
}
}
?

view 层坐落于:
core\admin\view

库房目录的html文档:


拷贝编码编码以下:
{area inject=".mainHead"}
div span {t} 加上库房 {/t} /span (现有 {$house_count} 个库房) /div
div
div {t} 编号 {/t} /div
div {t} 编写 {/t} /div
div {t} 删掉 {/t} /div
div {t} 库房名字 {/t} /div
div {t} 表明信息内容 {/t} /div
div {t} 配件特性[可选择] {/t} /div
/div
{/area} /p p div id="cat_tree"
{foreach from=$list item=item name="item"}
div depath=" {$item.step} " cid=" {$item.id} "
div
div {$item.id} /div
div
span
{img src="images/bundle/editcate.gif" border="0" alt="编写" }
/span
/div
div
span
{img src="images/bundle/delecate.gif" border="0" alt="删掉"}
/span
/div
div {$item.name} /div
div {if $rmation} {$rmation} {else} {/if} /div
div {$item.data0} /div
/div
/div
{/foreach}
/div /p p script
function deleteRow(act,event){
e=$(new Event(event).stop().target);
var row=e.getParent('.row');

if(confirm('您明确要删掉该库房?')){
W.page(act,{
method:'get',
update:'messagebox',
onComplete:function(re){

if(re.contains('successSplash')){row.remove();}

}
});
}
}
/script

view 层 能够参照原来的,由于html文档是开源系统的哈。

五、小结
到此,库房控制模块早已基本进行管理方法的作用。再必须别的作用,能够在这里上边拓展,碰到难题能看看源代码。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://rhwzjs.cn/ganhuo/3749.html