blacop
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);
    }
}
    
    
    
      

 

分类:

技术点:

相关文章: