这里介绍的是shopex增加了一个仓库模块。这里只介绍仓库的管理,不涉及仓库和商品的集成。
1.效果预览1。在“商品”菜单栏中添加“仓库”菜单组:
2.仓库列表: 3.添加/编辑仓库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的缩写)总结
到目前为止,仓库模块基本完成了管理功能。如果需要其他功能,可以扩展。如果遇到问题,可以看看源代码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)