shopex二次开发添加仓库模块代码分享

shopex二次开发添加仓库模块代码分享,第1张

shopex二次开发添加仓库模块代码分享

这里介绍的是shopex增加了一个仓库模块。这里只介绍仓库的管理,不涉及仓库和商品的集成。

1.效果预览1。在“商品”菜单栏中添加“仓库”菜单组:

2.仓库列表

3.添加/编辑仓库


二、添加菜单及创建数据表1.思路

1)因为后台菜单是加密的,网上有通过自定义目录添加后台菜单的方法,但是不够详细,没有成功=。=

所以我直接修改后台菜单的php,文件路径是:core\include_V5\adminschema.php。


使用dezender工具解密该文件。这里先说解密,如图:


选择“解密内核3”。经测试,另外两个不能正常解密php文件。

在解密的adminSchema.php文件中,有一个数组$menu['goods'],它是后台的'goods'菜单组。

然后我在“商品管理”的菜单组后添加了“仓库管理”,如下:


复制代码如下:
array("type"=>;"group","label"=>__("仓储管理"),
"items"=>;array(
array(
"type"=>;"menu"、
"label"=>;__("仓库列表"),
"link"=>;“index.php?货物/仓库&act=index"),
array(
"type"=>;"菜单"、
"标签"=>__("添加仓库"),
"link"=>;“index.php?货物/仓库&act=addnew")
]
]


其中type="group"表示这是一个菜单组,items是其中的子菜单。Type="menu"是一个可以点击的菜单。如果添加了target="_blank"属性,菜单链接将以新窗口的形式打开。

2.准备数据库


复制代码如下:
若存在则掉表`_warehouse
CREATETABLE`hx_warehouse`(
`id`int(11)NOTNULLAUTO_INCREMENT,
`name`varchar(200)NOTNULL,
`information`varchar(255)DEFAULTNULL,
`disabled`enum('true','false')字符集utf8DEFAULT'false',
`data0`varchar(255)DEFAULTNULL,
`data1`varchar(255

这里不使用shopex中的前缀。

第三,添加模型层

Shopex也采用MVC层次结构,模型层位于core/model和core/model_v5两个文件夹中,php版本在5以上时使用_v5。

这里的仓库模块属于商品,所以我将在core/model_v5/goods下创建一个新的mdl.warehouse.php。注意命名格式,否则不会检索到这个模型。

里面是mdl_warehouse类,继承自shopObject。也可以从modelFactory继承,因为shopObject也是modelFactory的子类。

如果您不太了解这里的模型层,可以解密其他mdl文件来查看它们的结构。

下面是仓库模型类:

复制代码如下:
<?PHP
/********************/
/**/
/*DezendforPHP5*/
/*NWS*/
/*为Nulled。WS*/
/**/
/*******************/<;/p>; <;p>include_once("shopobject.PHP");
MDL_warehouse类扩展了shopobject
{<;/p>; <;p>public$idColumn="id
public$adminCtl="goods/brand";
public$textColumn="name,information,data0";
public$defaultCols="id,name,information,data0";
public$tableName="hx_warehouse";

公共函数getHouseById($nlvid){
$aTemp=array();
$aTemp=$this->;dB->;select("SELECTid,name,information,data0FROMhx_warehouseWHEREid=。$nlvid);
return$aTemp;
}<;/p>; <;p>公共函数deletebyid($id){
$SQL="deletefromhx_warehousewhereid="。$id
return$this->;dB->;exec($SQL);
}

公共函数inserthouse($data){
$aRs=$this->;dB->;query("SELECT*FROMhx_warehouse,其中id=0");
$sSql=$this->;dB->;getInsertSql($aRs,$data);
退货!$sSql||$this->;dB->;查询($sSql);
}

公共函数updatehouse($aData){
$id=$aData['id'];

$SQL="updatehx_warehousesetname='"。$aData['name']。,信息='”。$aData['信息']。'";
$sql。=",数据0='"$aData['data0']。其中id="。$id

return$this->;dB->;查询($SQL);
}<;/p>; <;p>}</p>; <;p>?>

第四,添加控制层。

后台控制器位于:核心\管理\控制器。

同样,我们将在商品目录下创建一个新的ctl.warehouse.php。

类中有两个属性:

复制代码如下:
var$workground='goods';</p>; <;p>var$object='货物/仓库';//模型定位

代码如下:


复制代码如下:
<?PHP
include_once('objectpage.PHP');</p>; <;p>类ctl_warehouse扩展了objectPage{</p>; <;p>var$workground='goods
var$object='货物/仓库';

公共函数index(){
$houses=&;$this->;系统->;装载模型(“货物/仓库”);
$list=$houses->;getList();

$this->;pagedata['list']=&;$list
$this->;pagedata['house_count']=$houses->;count();
$this->;page('产品/仓库/地图.html');
}

公共函数addnew(){
$this->;页面('产品/仓库/信息.html');
}

公共函数edit($id){
$houses=&;$this->;系统->;装载模型(“货物/仓库”);
$house=$houses->;getHouseById($id);

$this->;pagedata['house']=$house[0];
$this->;页面('产品/仓库/信息.html');
}

公共函数deleteDo($id){
$this->;begin('index.php?货物/仓库&act=index’);
$houses=&;$this->;系统->;装载模型(“货物/仓库”);

if($houses->;deletebyid($id)){
$this->;End(true,__('仓库删除成功'));
}else{
$this->;End(false,__('仓库删除失败'));
}
}

公共函数addDo(){
if(empty($_POST['name']){
$this->;splash('失败','index.php?货物/仓库&Act=index',__('请输入仓库名称');
退出;
}

$houses=&;$this->;系统->;装载模型(“货物/仓库”);

if(empty($_post['id']){
$info="add";
$r=$houses->;inserthouse($_POST);
}else{
$info="modify";
$r=$houses->;updatehouse($_POST);
}


if($r)
$this->;splash('success','index.php?货物/仓库&Act=index',__($info。仓成功’));
else
$this->;splash('失败','index.php?货物/仓库&Act=index',__($info。仓库失败’)));
}

/**
*设置商品仓库
*@paramunknown_type$id
*/
公共函数count($id,$商品名称){$this->;系统->;装载模型(“货物/仓库”);
$list=$houses->;getLogList($id);

$this->;pagedata['GID']=$id;
$this->;pagedata['houses']=$list;
$this->;pagedata['goodsname']=$goodsname;

$this->;singlepage('产品/仓库/计数.html');
}

公共函数countdo($GID){
$this->;begin('index.php?商品/产品&act=index’);

$houses=&;$this->;系统->;装载模型(“货物/仓库”);
$list=$houses->;getList();

foreach($listas$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,__('仓库库存修改失败,请关闭此窗口'));
}
}
}
?>

视图层位于:
core\admin\view。

仓库的Html文件:


复制代码代码如下:
<{areainject=".mainHead"}>
<divclass="action-bar"><spanclass="sysiconBtnaddorder"onclick="W.page('index.php?ctl=goods/warehouse&act=addNew')"><{t}>添加仓库<{/t}></span>(共有<{$house_count}>个仓库)</div>
<divclass='gridlist-headmainHead'>
<divclass='span-1'><{t}>序号<{/t}></div>
<divclass='span-1'><{t}>编辑<{/t}></div>
<divclass='span-1'><{t}>删除<{/t}></div>
<divclass='span-4'><{t}>仓库名称<{/t}></div>
<divclass='span-8'><{t}>说明信息<{/t}></div>
<divclass='span-4'><{t}>附件属性[可选]<{/t}></div>
</div>
<{/area}></p> <p><divid="cat_tree"class='gridlist'>
<{foreachfrom=$listitem=itemname="item"}>
<divdepath="<{$item.step}>"class="clear_catrow"cid="<{$item.id}>">
<divclass='row-line'>
<divclass='span-1'><{$item.id}></div>
<divclass='span-1'>
<spanclass="opt"onClick="W.page('index.php?ctl=goods/warehouse&act=edit&p[0]=<{$item.id}>')">
<{imgsrc="images/bundle/editcate.gif"border="0"alt="编辑"}>
</span>
</div>
<divclass='span-1'>
<spanclass="opt"onclick="deleteRow('index.php?ctl=goods/warehouse&act=deleteDo&p[0]=<{$item.id}>',event)">
<{imgsrc="images/bundle/delecate.gif"border="0"alt="删除"}>
</span>
</div>
<divclass='span-4'><{$item.name}></div>
<divclass='span-8'><{if$item.information}><{$item.information}><{else}><{/if}></div>
<divclass='span-4'><{$item.data0}></div>
</div>
</div>
<{/foreach}>
</div></p> <p><script>
functiondeleteRow(act,event){
e=$(newEvent(event).stop().target);
varrow=e.getParent('.row');

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

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

}
});
}
}
</script>

复制代码如下:
<{areainject="。mainHead"}>
<;divclass="action-bar"><spanclass="sysiconBtnaddorder"onclick="w.page('index.PHP?货物/仓库&act=addnew')">;<{t}>添加仓库

视图层可以参考原层,因为html文件是开源的。

动词(verb的缩写)总结
到目前为止,仓库模块基本完成了管理功能。如果需要其他功能,可以扩展。如果遇到问题,可以看看源代码。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/771959.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存