本帖最后由 小江哥 于 2017-12-5 14:34 编辑
各位同学,大家好!欢迎关注我们杭州黑马PHP课程,接下来的一段时间我们将会有不同阶段的老师给同学们分享PHP课程的基础篇以及项目篇。这节课程主要是给大家分享项目篇。从项目的部署一直到项目的整理架构,流程,希望能给大家的编程学习带来帮助,当然在学习中遇到了问题也可以回帖进行提问,我们还会不定时的在公众平台派送一些意想不到的惊喜呦!!!
部署环境是开始项目的前提,那下面就详细的给大家介绍一下如何部署PHP项目:
一、电商项目部署
1.1、项目部署步骤 1、配置虚拟主机 2、使用TP生成项目应用代码 3、手动创建后台模块 1.2、虚拟主机的配置①创建项目的根目录 ②在jxshop目录下创建wwwroot目录 将虚拟主机的域名解析的目录指向到wwwroot目录下对项目的安全性更高 ③配置虚拟主机 ④修改本地的hosts文件 ⑤重启Apache访问域名
1.3、使用TP生产应用代码①拷贝TP框架源代码到wwwroot同级目录 ②拷贝入口文件及重写规则文件 ③修改入口文件 ④访问生成代码 1.4、手动创建后台模块①复制Home模块改名为Admin ②修改Index控制器的命名空间 ③访问测试 二、电商项目URL地址优化2.1、URL地址优化的具体方法[size=14.0000pt]1、隐藏项目的入口文件 [size=14.0000pt]2、隐藏默认的Home模块 2.2、隐藏项目的入口文件①开启Apache的重写模块 ②设置虚拟主机容许重写 ③拷贝TP提供的默认的重写规则文件 ④修改项目的配置设置为重写模式 ⑤测试访问 2.3、设置Home为默认的模块①修改配置项设置默认模块 ②增加设置容许访问的模块 ③访问测试 ④测试使用U函数生成URL地址 效果如下 三、后台首页的展示3.1、后台资源文件拷贝①在域名对应的目录下创建Public目录 ②在Public目录下创建Admin目录 ③将资源文件进行拷贝 3.2、展示后台页面①修改代码加载模板 ②在视图目录下创建Index目录 ③拷贝首页的模板到Index目录下 3.3、解决显示错乱问题①增加三个方法加载模板 ②拷贝三个模板到index目录下 ③修改配置项设置自定义的模板替换 ④修改top中的资源地址 ⑤修改menu的资源地址 ⑥修改main模板
四、商品分类管理4.1、数据库配置4.1.1、创建电商数据库
4.1.2、创建分类的数据表[size=14.0000pt]1、数据表创建的常用原则 每张表都需要有一个主键标识 每个字段劲量的设置为不容许为空然后给上默认值 每个字段的数据类型选择尽量选择小的类型 [size=14.0000pt]2、实现分类数据表的创建 CREATE TABLE `jx_category` ( `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, `cname` char(50) NOT NULL DEFAULT '' COMMENT '分类名称', `parent_id` smallint(6) NOT NULL DEFAULT '0' COMMENT '分类的父分类ID', `isrec` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否推荐 0表示不推荐1表示推荐', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 4.1.3、配置TP与数据库的交互信息
4.2、分类控制器及模型创建4.2.1、修改控制器的继承关系目前是所有控制器都是继承TP的控制器,后期做一个公共操作时,例如登录需要在每个控制器都要执行。如果简单的修改就需要修改到TP的源代码。因此可以自己创建一个公共控制器,而该控制器时继承TP的控制器的。然后让其他的所有控制器继承该公共控制器即可 ①创建公共控制器 ②修改Index控制器继承关系 ③创建分类的控制器 4.2.2、创建模型①创建公共模型 ②创建分类模型 4.3、商品分类的添加4.3.1、展示出添加页面①创建方法展示出模板 ②创建Cagetory目录 ③拷贝分类添加模板 ④修改资源地址 4.3.2、数据入库①自定义字段 ②创建自动验证 ③接受数据入库 4.4、实现可以添加为子分类①控制器中调用模型方法获取数据 ②在模型中创建getCaetTree方法获取数据 ③在模型中创建getTree方法格式化数据 ④模板中对数据进行循环展示 4.5、模板继承使用①在视图目录下创建Public目录 ②复制category中add的模板改名为base ③对公共模板进行修改 ④对分类的添加模板使用继承 4.6、商品分类的列表显示①控制器中获取数据并且赋值给模板 ②拷贝模板 ③修改模板 4.7、商品分类的删除①修改分类列表中的删除链接 ②控制器中实现删除 ③在模型中实现删除 4.8、商品分类的编辑4.8.1、显示出要编辑的分类信息①先给分类的列表增加修改的连接地址 ②创建edit方法显示出分类的信息 ③在公共模型中封装方法获取数据 ④拷贝模板 ⑤ 修改显示数据获取所有的分类信息 ⑥模板中进行默认的数据显示
4.8.2、提交分类数据进行修改①在修改的模板中增加隐藏域 ②接受数据进行修改 ③在分类模型中定义update方法进行数据修改 ④修改分类的修改功能 目前的修改的功能可以将自己设置为父分类。因此存在问题。 将当前分类的父分类设置自己的子分类也会存在问题 不能讲父分类设置为自己以及自己下面的所有的子分类 [size=14.0000pt]1、修改getCatetree方法可以获取某个分类的子分类 [size=14.0000pt]2、在修改的之前进行判断 [size=14.0000pt]3、修改报错信息 五、商品管理5.1、商品数据表创建CREATE TABLE `jx_goods` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '商品ID', `goods_name` varchar(255) NOT NULL DEFAULT '' COMMENT '商品名称', `goods_sn` char(30) NOT NULL DEFAULT '' COMMENT '商品货号', `cate_id` smallint(6) NOT NULL DEFAULT '0' COMMENT '商品分类ID 对于category表中的ID字段', `market_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '市场售价', `shop_price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '本店售价', `goods_img` varchar(255) NOT NULL DEFAULT '' COMMENT '商品缩略图', `goods_thumb` varchar(255) NOT NULL DEFAULT '' COMMENT '商品缩略小图', `is_hot` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否热卖 1表示热卖 0表示不是', `is_rec` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否推荐 1表示推荐 0表示不推荐', `is_new` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否热卖 1表示新品 0表示不是', `addtime` int(11) NOT NULL DEFAULT '0' COMMENT '添加时间', `isdel` tinyint(4) NOT NULL DEFAULT '1' COMMENT '表示商品是否删除 1正常 0删除状态', `is_sale` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品是否销售 1销售 0下架状态', PRIMARY KEY (`id`), UNIQUE KEY `goods_sn` (`goods_sn`) USING BTREE, KEY `goods_name` (`goods_name`) USING BTREE, KEY `isdel` (`isdel`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 5.2、商品数据入库5.2.1、显示出商品添加页面①创建控制器加载模板 ②在视图目录下创建goods目录 ③复制分类的添加模板到Goods目录下 ③修改对应的表单 ④控制器获取所有的分类数据 ⑤模板显示出分类 5.2.2、商品基本信息入库①创建商品模型并且自定义字段 ②定义自动验证 ③控制器调用模型进行数据写入 5.2.3、解决商品入库中的问题问题一:在商品写入数据时没有时间 问题二:对货号的处理,当用户输入货号的时候,需要检查货号是否重复。如果没有输入需要生产一个货号 ①在模型中添加钩子函数处理数据 ②根据错误信息显示出报错 5.2.4、使用ueditor编辑器①下载编辑器的源代码 ②在Public目录下创建ueditor目录 ③将源代码拷贝到ueditor目录下 ④在添加页面中引入编辑器的js源代码 ⑤引入编辑器的占位 ⑥初始化编辑器 5.2.5、实现图片上传及缩略图制作①手动的创建图片保存的根目录 ②在钩子方法中实现图片上传 ③根据上传的图片制作缩略图
众览群雄,唯我杭城独秀—一贴汇总杭州校区所有就业薪资
|