PHP的ECSHOP商城的改造成MVC添加商品功能总结 原始的ECSHOP商城不是MVC的架构,改造成MVC架构. admin后台 Platform =back,登录页面进去是index.php,里面是一个框架集frameset,上面是top,html, 左边是menu.html,滚动条drag.html,右边是main.html,都放在back/view下面, menu.html里面的 的添加商品href的action是 ------------- <ul id="menu-ul"> <li name="menu" key="02_cat_and_goods" class="explode"> 商品管理 <ul> <li class="menu-item"><a target="main-frame" href="goods.php?act=list">商品列表</a></li> <li class="menu-item"><a target="main-frame" href="index.php?p=back&c=Goods&a=add">添加新商品</a></li> ------------- 修改后是调用控制器c=Goods,View=add.html,m=GoodsModel, View=add.html的FORM里面有 添加商品的超链接a href里面 a=insert,控制器c=Goods,样式CSS可以不管,直接用原来的就行。 ------------- back/view/goods_add.html <!-- tab body --> <div id="tabbody-div"> <form name="theForm" method="post" action="index.php?p=back&c=Goods&a=insert" enctype="multipart/form-data"> 点击submit按钮后POST提交了表单到 $_POST 数组里面,form表单的action属性是就会自动跳去执行="index.php?p=back&c=Goods&a=insert" UPLOAD做成了一个工具类class放在framwork框架的tool目录里面,用作商品图的上传处理。 GoodsController会调用UPLOAD.class.php ------------- back/controller/GoodsController.class.php --- /** * 后台的商品相关操作控制器类 */ class GoodsController extends PlatformController { /** * 商品添加表单 */ public function addAction() { require CURRENT_VIEW_PATH . 'goods_add.html'; } /** * 商品插入 */ public function insertAction() { //收集表单数据 $data['goods_name'] = $_POST['goods_name']; $data['shop_price'] = $_POST['shop_price']; $data['goods_desc'] = $_POST['goods_desc']; $data['goods_number'] = $_POST['goods_number']; //上架 $data['is_on_sale'] = isset($_POST['is_on_sale']) ? '1' : '0'; //推荐属性 $data['goods_promote'] = isset($_POST['goods_promote']) ? implode(',', $_POST['goods_promote']) : ''; //通过模型插入到数据表 $m_goods = Factory::M('GoodsModel'); //根据插入结果,给出提示,并展示 if ($m_goods->insertGoods($data)) { //成功, 跳转到商品列表 $this->_jump('index.php?p=back&c=Goods&a=list'); } else { //失败,给出错误提示,返回到add添加动作 $this->_jump('index.php?p=back&c=Goods&a=add', '添加失败:失败原因'); } } public function listAction() { echo 'Goods:list'; } } ------------- back/model/GoodsModel.class.php /** * 后台 商品表的操作模型 */ class GoodsModel extends Model { protected $_logic_table = 'goods'; /** * 插入商品 * @param $data array,关联数组字段与值 * @return bool */ public function insertGoods($data) { //先数据校验 $data['create_admin_id'] = $_SESSION['admin']['admin_id']; //插入到goods表 // 保证数据转义后: $escape_data = $this->_escapeStringAll($data); $sql = sprintf("INSERT INTO $this->_table VALUES (null, %s, %s, '', %s, %s, %s, %s, %s, %s)", $escape_data['goods_name'], $escape_data['shop_price'], $escape_data['goods_image_ori'], $escape_data['goods_desc'], $escape_data['goods_number'], $escape_data['is_on_sale'], $escape_data['goods_promote'], $escape_data['create_admin_id']); //执行 return $this->_dao->query($sql); } }