<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TP3.2商城 &#8211; 个人随笔</title>
	<atom:link href="/classify/%E5%90%8E%E5%8F%B0%E6%A1%86%E6%9E%B6/tp3-2/tp3-2%E5%95%86%E5%9F%8E/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Sat, 19 May 2018 13:04:55 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>

<image>
	<url>/wp-content/uploads/2022/01/cropped-截屏2022-01-01-18.57.09-32x32.png</url>
	<title>TP3.2商城 &#8211; 个人随笔</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>TP3.2商城 （一）项目开发流程、商品分类、商品管理、图片上传</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4706.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4706.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 13:04:55 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[商品分类]]></category>
		<category><![CDATA[商品管理]]></category>
		<category><![CDATA[图片上传]]></category>
		<category><![CDATA[项目开发流程]]></category>
		<guid isPermaLink="false">/?p=4706</guid>

					<description><![CDATA[项目开发流程; 需求分析 原型界面 UI设计 前端编写代码 核心架构处理(代码层面核心架构，服务器层面的架构、 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>项目开发流程;</h1>
<ol>
<li>
  需求分析
</li>
<li>
  原型界面
</li>
<li>
  UI设计
</li>
<li>
  前端编写代码
</li>
<li>
  核心架构处理(代码层面核心架构，服务器层面的架构、数据库的架构等)
</li>
<li>
  编写代码
</li>
<li>
  测试
</li>
<li>
  上线
</li>
</ol>
<h1>项目分析</h1>
<h2>2.1、项目前台分析</h2>
<p><img fetchpriority="high" decoding="async" width="992" height="448" src="/wp-content/uploads/2018/05/word-image-4231.png" class="wp-image-4707" srcset="/wp-content/uploads/2018/05/word-image-4231.png 992w, /wp-content/uploads/2018/05/word-image-4231-300x135.png 300w, /wp-content/uploads/2018/05/word-image-4231-768x347.png 768w" sizes="(max-width: 992px) 100vw, 992px" /></p>
<h2>2.2、项目后台分析</h2>
<p><img decoding="async" width="900" height="469" src="/wp-content/uploads/2018/05/word-image-4232.png" class="wp-image-4708" srcset="/wp-content/uploads/2018/05/word-image-4232.png 900w, /wp-content/uploads/2018/05/word-image-4232-300x156.png 300w, /wp-content/uploads/2018/05/word-image-4232-768x400.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></p>
<h1>ecshop安装</h1>
<h2>3.1、ecshop的配置</h2>
<p>
  ①创建ecshop的web目录
</p>
<p><img decoding="async" width="828" height="226" src="/wp-content/uploads/2018/05/word-image-4233.png" class="wp-image-4709" srcset="/wp-content/uploads/2018/05/word-image-4233.png 828w, /wp-content/uploads/2018/05/word-image-4233-300x82.png 300w, /wp-content/uploads/2018/05/word-image-4233-768x210.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></p>
<p>
  ②拷贝ecshop的源码
</p>
<p><img loading="lazy" decoding="async" width="1218" height="593" src="/wp-content/uploads/2018/05/word-image-4234.png" class="wp-image-4710" srcset="/wp-content/uploads/2018/05/word-image-4234.png 1218w, /wp-content/uploads/2018/05/word-image-4234-300x146.png 300w, /wp-content/uploads/2018/05/word-image-4234-768x374.png 768w, /wp-content/uploads/2018/05/word-image-4234-1024x499.png 1024w" sizes="(max-width: 1218px) 100vw, 1218px" /></p>
<p>
  ③创建虚拟主机
</p>
<p><img loading="lazy" decoding="async" width="1030" height="383" src="/wp-content/uploads/2018/05/word-image-4235.png" class="wp-image-4711" srcset="/wp-content/uploads/2018/05/word-image-4235.png 1030w, /wp-content/uploads/2018/05/word-image-4235-300x112.png 300w, /wp-content/uploads/2018/05/word-image-4235-768x286.png 768w, /wp-content/uploads/2018/05/word-image-4235-1024x381.png 1024w" sizes="(max-width: 1030px) 100vw, 1030px" /></p>
<p>
  ④修改hosts文件
</p>
<p><img loading="lazy" decoding="async" width="615" height="433" src="/wp-content/uploads/2018/05/word-image-4236.png" class="wp-image-4712" srcset="/wp-content/uploads/2018/05/word-image-4236.png 615w, /wp-content/uploads/2018/05/word-image-4236-300x211.png 300w" sizes="(max-width: 615px) 100vw, 615px" /></p>
<h2>3.2、安装ecshop</h2>
<p>
  ①重启Apache访问安装
</p>
<p><img loading="lazy" decoding="async" width="1253" height="689" src="/wp-content/uploads/2018/05/word-image-4237.png" class="wp-image-4713" srcset="/wp-content/uploads/2018/05/word-image-4237.png 1253w, /wp-content/uploads/2018/05/word-image-4237-300x165.png 300w, /wp-content/uploads/2018/05/word-image-4237-768x422.png 768w, /wp-content/uploads/2018/05/word-image-4237-1024x563.png 1024w" sizes="(max-width: 1253px) 100vw, 1253px" /></p>
<p>
  ②检查环境
</p>
<p><img loading="lazy" decoding="async" width="1198" height="670" src="/wp-content/uploads/2018/05/word-image-4238.png" class="wp-image-4714" srcset="/wp-content/uploads/2018/05/word-image-4238.png 1198w, /wp-content/uploads/2018/05/word-image-4238-300x168.png 300w, /wp-content/uploads/2018/05/word-image-4238-768x430.png 768w, /wp-content/uploads/2018/05/word-image-4238-1024x573.png 1024w" sizes="(max-width: 1198px) 100vw, 1198px" /></p>
<p>
  ③配置信息
</p>
<p><img loading="lazy" decoding="async" width="1195" height="693" src="/wp-content/uploads/2018/05/word-image-4239.png" class="wp-image-4715" srcset="/wp-content/uploads/2018/05/word-image-4239.png 1195w, /wp-content/uploads/2018/05/word-image-4239-300x174.png 300w, /wp-content/uploads/2018/05/word-image-4239-768x445.png 768w, /wp-content/uploads/2018/05/word-image-4239-1024x594.png 1024w" sizes="(max-width: 1195px) 100vw, 1195px" /></p>
<p>
  ④登录后台
</p>
<p><img loading="lazy" decoding="async" width="1115" height="616" src="/wp-content/uploads/2018/05/word-image-4240.png" class="wp-image-4716" srcset="/wp-content/uploads/2018/05/word-image-4240.png 1115w, /wp-content/uploads/2018/05/word-image-4240-300x166.png 300w, /wp-content/uploads/2018/05/word-image-4240-768x424.png 768w, /wp-content/uploads/2018/05/word-image-4240-1024x566.png 1024w" sizes="(max-width: 1115px) 100vw, 1115px" /></p>
<h2>3.3、解决报错问题</h2>
<p>
  ①修改includes目录下的cls_template.php文件
</p>
<p><img loading="lazy" decoding="async" width="867" height="559" src="/wp-content/uploads/2018/05/word-image-4241.png" class="wp-image-4717" srcset="/wp-content/uploads/2018/05/word-image-4241.png 867w, /wp-content/uploads/2018/05/word-image-4241-300x193.png 300w, /wp-content/uploads/2018/05/word-image-4241-768x495.png 768w" sizes="(max-width: 867px) 100vw, 867px" /></p>
<p>
  ②修改cls_image.php文件
</p>
<p><img loading="lazy" decoding="async" width="880" height="533" src="/wp-content/uploads/2018/05/word-image-4242.png" class="wp-image-4718" srcset="/wp-content/uploads/2018/05/word-image-4242.png 880w, /wp-content/uploads/2018/05/word-image-4242-300x182.png 300w, /wp-content/uploads/2018/05/word-image-4242-768x465.png 768w" sizes="(max-width: 880px) 100vw, 880px" /></p>
<p>
  ③修改lib_main.php
</p>
<p><img loading="lazy" decoding="async" width="911" height="533" src="/wp-content/uploads/2018/05/word-image-4243.png" class="wp-image-4719" srcset="/wp-content/uploads/2018/05/word-image-4243.png 911w, /wp-content/uploads/2018/05/word-image-4243-300x176.png 300w, /wp-content/uploads/2018/05/word-image-4243-768x449.png 768w" sizes="(max-width: 911px) 100vw, 911px" /></p>
<p>
  ④清除缓存
</p>
<p><img loading="lazy" decoding="async" width="1366" height="165" src="/wp-content/uploads/2018/05/word-image-4244.png" class="wp-image-4720" srcset="/wp-content/uploads/2018/05/word-image-4244.png 1366w, /wp-content/uploads/2018/05/word-image-4244-300x36.png 300w, /wp-content/uploads/2018/05/word-image-4244-768x93.png 768w, /wp-content/uploads/2018/05/word-image-4244-1024x124.png 1024w" sizes="(max-width: 1366px) 100vw, 1366px" /></p>
<h1>商品分类管理</h1>
<h2>4.1、商品分类列表显示</h2>
<p>
  ①增加index方法获取数据并且渲染模板
</p>
<p><img loading="lazy" decoding="async" width="938" height="474" src="/wp-content/uploads/2018/05/word-image-4245.png" class="wp-image-4721" srcset="/wp-content/uploads/2018/05/word-image-4245.png 938w, /wp-content/uploads/2018/05/word-image-4245-300x152.png 300w, /wp-content/uploads/2018/05/word-image-4245-768x388.png 768w" sizes="(max-width: 938px) 100vw, 938px" /></p>
<p>
  ②拷贝视图
</p>
<p><img loading="lazy" decoding="async" width="1232" height="325" src="/wp-content/uploads/2018/05/word-image-4246.png" class="wp-image-4722" srcset="/wp-content/uploads/2018/05/word-image-4246.png 1232w, /wp-content/uploads/2018/05/word-image-4246-300x79.png 300w, /wp-content/uploads/2018/05/word-image-4246-768x203.png 768w, /wp-content/uploads/2018/05/word-image-4246-1024x270.png 1024w" sizes="(max-width: 1232px) 100vw, 1232px" /></p>
<p>
  ③修改资源地址
</p>
<p><img loading="lazy" decoding="async" width="1117" height="456" src="/wp-content/uploads/2018/05/word-image-4247.png" class="wp-image-4723" srcset="/wp-content/uploads/2018/05/word-image-4247.png 1117w, /wp-content/uploads/2018/05/word-image-4247-300x122.png 300w, /wp-content/uploads/2018/05/word-image-4247-768x314.png 768w, /wp-content/uploads/2018/05/word-image-4247-1024x418.png 1024w" sizes="(max-width: 1117px) 100vw, 1117px" /></p>
<p>
  ④修改模板循环显示数据
</p>
<p><img loading="lazy" decoding="async" width="1115" height="672" src="/wp-content/uploads/2018/05/word-image-4248.png" class="wp-image-4724" srcset="/wp-content/uploads/2018/05/word-image-4248.png 1115w, /wp-content/uploads/2018/05/word-image-4248-300x181.png 300w, /wp-content/uploads/2018/05/word-image-4248-768x463.png 768w, /wp-content/uploads/2018/05/word-image-4248-1024x617.png 1024w" sizes="(max-width: 1115px) 100vw, 1115px" /></p>
<h2>4.2、分类的删除</h2>
<p>
  ①创建方法调用模型方法进行删除
</p>
<p><img loading="lazy" decoding="async" width="958" height="702" src="/wp-content/uploads/2018/05/word-image-4249.png" class="wp-image-4725" srcset="/wp-content/uploads/2018/05/word-image-4249.png 958w, /wp-content/uploads/2018/05/word-image-4249-300x220.png 300w, /wp-content/uploads/2018/05/word-image-4249-768x563.png 768w" sizes="(max-width: 958px) 100vw, 958px" /></p>
<p>
  ②在模型中实现删除方法
</p>
<p><img loading="lazy" decoding="async" width="1047" height="592" src="/wp-content/uploads/2018/05/word-image-4250.png" class="wp-image-4726" srcset="/wp-content/uploads/2018/05/word-image-4250.png 1047w, /wp-content/uploads/2018/05/word-image-4250-300x170.png 300w, /wp-content/uploads/2018/05/word-image-4250-768x434.png 768w, /wp-content/uploads/2018/05/word-image-4250-1024x579.png 1024w" sizes="(max-width: 1047px) 100vw, 1047px" /></p>
<h2>4.3、分类的编辑</h2>
<h3>4.3.1、回显分类信息</h3>
<p>
  ①创建方法获取数据并且显示
</p>
<p><img loading="lazy" decoding="async" width="1047" height="616" src="/wp-content/uploads/2018/05/word-image-4251.png" class="wp-image-4727" srcset="/wp-content/uploads/2018/05/word-image-4251.png 1047w, /wp-content/uploads/2018/05/word-image-4251-300x177.png 300w, /wp-content/uploads/2018/05/word-image-4251-768x452.png 768w, /wp-content/uploads/2018/05/word-image-4251-1024x602.png 1024w" sizes="(max-width: 1047px) 100vw, 1047px" /></p>
<p>
  ②拷贝添加模板为编辑模板
</p>
<p><img loading="lazy" decoding="async" width="865" height="283" src="/wp-content/uploads/2018/05/word-image-4252.png" class="wp-image-4728" srcset="/wp-content/uploads/2018/05/word-image-4252.png 865w, /wp-content/uploads/2018/05/word-image-4252-300x98.png 300w, /wp-content/uploads/2018/05/word-image-4252-768x251.png 768w" sizes="(max-width: 865px) 100vw, 865px" /></p>
<p>
  ③修改模板
</p>
<p><img loading="lazy" decoding="async" width="1160" height="699" src="/wp-content/uploads/2018/05/word-image-4253.png" class="wp-image-4729" srcset="/wp-content/uploads/2018/05/word-image-4253.png 1160w, /wp-content/uploads/2018/05/word-image-4253-300x181.png 300w, /wp-content/uploads/2018/05/word-image-4253-768x463.png 768w, /wp-content/uploads/2018/05/word-image-4253-1024x617.png 1024w" sizes="(max-width: 1160px) 100vw, 1160px" /></p>
<h3>4.3.2、实现提交修改</h3>
<p>
  ①修改edit方法处理提交
</p>
<p><img loading="lazy" decoding="async" width="977" height="585" src="/wp-content/uploads/2018/05/word-image-4254.png" class="wp-image-4730" srcset="/wp-content/uploads/2018/05/word-image-4254.png 977w, /wp-content/uploads/2018/05/word-image-4254-300x180.png 300w, /wp-content/uploads/2018/05/word-image-4254-768x460.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></p>
<p>
  ②修改getTree方法可以根据id标识获取子分类
</p>
<p><img loading="lazy" decoding="async" width="1037" height="536" src="/wp-content/uploads/2018/05/word-image-4255.png" class="wp-image-4731" srcset="/wp-content/uploads/2018/05/word-image-4255.png 1037w, /wp-content/uploads/2018/05/word-image-4255-300x155.png 300w, /wp-content/uploads/2018/05/word-image-4255-768x397.png 768w, /wp-content/uploads/2018/05/word-image-4255-1024x529.png 1024w" sizes="(max-width: 1037px) 100vw, 1037px" /></p>
<p>
  ③模型增加方法实现修改
</p>
<p><img loading="lazy" decoding="async" width="1106" height="697" src="/wp-content/uploads/2018/05/word-image-4256.png" class="wp-image-4732" srcset="/wp-content/uploads/2018/05/word-image-4256.png 1106w, /wp-content/uploads/2018/05/word-image-4256-300x189.png 300w, /wp-content/uploads/2018/05/word-image-4256-768x484.png 768w, /wp-content/uploads/2018/05/word-image-4256-1024x645.png 1024w" sizes="(max-width: 1106px) 100vw, 1106px" /></p>
<h2>4.4、分类使用模板继承</h2>
<h3>4.4.1、介绍模板继承</h3>
<p>
  一个模板继承另外一个模板。在父模板中已有的HTML代码可以直接使用
</p>
<p><img loading="lazy" decoding="async" width="1046" height="635" src="/wp-content/uploads/2018/05/word-image-4257.png" class="wp-image-4733" srcset="/wp-content/uploads/2018/05/word-image-4257.png 1046w, /wp-content/uploads/2018/05/word-image-4257-300x182.png 300w, /wp-content/uploads/2018/05/word-image-4257-768x466.png 768w, /wp-content/uploads/2018/05/word-image-4257-1024x622.png 1024w" sizes="(max-width: 1046px) 100vw, 1046px" /></p>
<h3>4.4.2、使用模板继承</h3>
<p>
  ①定义父模板
</p>
<p><img loading="lazy" decoding="async" width="1119" height="669" src="/wp-content/uploads/2018/05/word-image-4258.png" class="wp-image-4734" srcset="/wp-content/uploads/2018/05/word-image-4258.png 1119w, /wp-content/uploads/2018/05/word-image-4258-300x179.png 300w, /wp-content/uploads/2018/05/word-image-4258-768x459.png 768w, /wp-content/uploads/2018/05/word-image-4258-1024x612.png 1024w" sizes="(max-width: 1119px) 100vw, 1119px" /><br />
<img loading="lazy" decoding="async" width="1096" height="498" src="/wp-content/uploads/2018/05/word-image-4259.png" class="wp-image-4735" srcset="/wp-content/uploads/2018/05/word-image-4259.png 1096w, /wp-content/uploads/2018/05/word-image-4259-300x136.png 300w, /wp-content/uploads/2018/05/word-image-4259-768x349.png 768w, /wp-content/uploads/2018/05/word-image-4259-1024x465.png 1024w" sizes="(max-width: 1096px) 100vw, 1096px" /></p>
<p>
  ②修改添加使用模板继承
</p>
<p><img loading="lazy" decoding="async" width="1101" height="616" src="/wp-content/uploads/2018/05/word-image-4260.png" class="wp-image-4736" srcset="/wp-content/uploads/2018/05/word-image-4260.png 1101w, /wp-content/uploads/2018/05/word-image-4260-300x168.png 300w, /wp-content/uploads/2018/05/word-image-4260-768x430.png 768w, /wp-content/uploads/2018/05/word-image-4260-1024x573.png 1024w" sizes="(max-width: 1101px) 100vw, 1101px" /><br />
<img loading="lazy" decoding="async" width="1080" height="512" src="/wp-content/uploads/2018/05/word-image-4261.png" class="wp-image-4737" srcset="/wp-content/uploads/2018/05/word-image-4261.png 1080w, /wp-content/uploads/2018/05/word-image-4261-300x142.png 300w, /wp-content/uploads/2018/05/word-image-4261-768x364.png 768w, /wp-content/uploads/2018/05/word-image-4261-1024x485.png 1024w" sizes="(max-width: 1080px) 100vw, 1080px" /></p>
<p>
  ③修改index使用模板继承
</p>
<p><img loading="lazy" decoding="async" width="953" height="342" src="/wp-content/uploads/2018/05/word-image-4262.png" class="wp-image-4738" srcset="/wp-content/uploads/2018/05/word-image-4262.png 953w, /wp-content/uploads/2018/05/word-image-4262-300x108.png 300w, /wp-content/uploads/2018/05/word-image-4262-768x276.png 768w" sizes="(max-width: 953px) 100vw, 953px" /></p>
<p>
  ④修改编辑模板使用模板继承
</p>
<p><img loading="lazy" decoding="async" width="1060" height="428" src="/wp-content/uploads/2018/05/word-image-4263.png" class="wp-image-4739" srcset="/wp-content/uploads/2018/05/word-image-4263.png 1060w, /wp-content/uploads/2018/05/word-image-4263-300x121.png 300w, /wp-content/uploads/2018/05/word-image-4263-768x310.png 768w, /wp-content/uploads/2018/05/word-image-4263-1024x413.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /></p>
<h1>商品管理</h1>
<h2>5.1、商品数据表创建</h2>
<p>
  CREATE TABLE `shop_goods` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `goods_name` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;商品名称&#8217;,
</p>
<p>
    `goods_sn` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;货号&#8217;,
</p>
<p>
    `market_price` decimal(10,2) NOT NULL DEFAULT &#8216;0.00&#8217; COMMENT &#8216;市场价格&#8217;,
</p>
<p>
    `shop_price` decimal(10,2) NOT NULL DEFAULT &#8216;0.00&#8217; COMMENT &#8216;本店售价  单位元&#8217;,
</p>
<p>
    `goods_number` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;商品数量&#8217;,
</p>
<p>
    `cate_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;商品的分类ID 关联category表中id字段&#8217;,
</p>
<p>
    `goods_img` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;商品图片&#8217;,
</p>
<p>
    `goods_thumb` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;缩略图&#8217;,
</p>
<p>
    `goods_body` text,
</p>
<p>
    `addtime` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;添加时间&#8217;,
</p>
<p>
    `is_del` tinyint(4) NOT NULL DEFAULT &#8216;1&#8217; COMMENT &#8216;是否删除 1代表正常 0代表已经删除&#8217;,
</p>
<p>
    `is_hot` tinyint(4) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;是否热卖 1是 0否&#8217;,
</p>
<p>
    `is_new` tinyint(4) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;是否新品  1是0否&#8217;,
</p>
<p>
    `is_rec` tinyint(4) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;是否推荐  1是0否&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h2>5.2、实现商品的基本入库</h2>
<h3>5.2.1、显示添加的界面</h3>
<p>
  ①创建控制器方法显示添加的模板
</p>
<p><img loading="lazy" decoding="async" width="964" height="550" src="/wp-content/uploads/2018/05/word-image-4264.png" class="wp-image-4740" srcset="/wp-content/uploads/2018/05/word-image-4264.png 964w, /wp-content/uploads/2018/05/word-image-4264-300x171.png 300w, /wp-content/uploads/2018/05/word-image-4264-768x438.png 768w" sizes="(max-width: 964px) 100vw, 964px" /></p>
<p>
  ②拷贝商品添加模板
</p>
<p><img loading="lazy" decoding="async" width="1158" height="435" src="/wp-content/uploads/2018/05/word-image-4265.png" class="wp-image-4741" srcset="/wp-content/uploads/2018/05/word-image-4265.png 1158w, /wp-content/uploads/2018/05/word-image-4265-300x113.png 300w, /wp-content/uploads/2018/05/word-image-4265-768x288.png 768w, /wp-content/uploads/2018/05/word-image-4265-1024x385.png 1024w" sizes="(max-width: 1158px) 100vw, 1158px" /></p>
<p>
  ③修改模板使用模板继承
</p>
<p><img loading="lazy" decoding="async" width="1113" height="496" src="/wp-content/uploads/2018/05/word-image-4266.png" class="wp-image-4742" srcset="/wp-content/uploads/2018/05/word-image-4266.png 1113w, /wp-content/uploads/2018/05/word-image-4266-300x134.png 300w, /wp-content/uploads/2018/05/word-image-4266-768x342.png 768w, /wp-content/uploads/2018/05/word-image-4266-1024x456.png 1024w" sizes="(max-width: 1113px) 100vw, 1113px" /></p>
<p>
  ④处理模板显示商品分类
</p>
<p><img loading="lazy" decoding="async" width="1125" height="699" src="/wp-content/uploads/2018/05/word-image-4267.png" class="wp-image-4743" srcset="/wp-content/uploads/2018/05/word-image-4267.png 1125w, /wp-content/uploads/2018/05/word-image-4267-300x186.png 300w, /wp-content/uploads/2018/05/word-image-4267-768x477.png 768w, /wp-content/uploads/2018/05/word-image-4267-1024x636.png 1024w" sizes="(max-width: 1125px) 100vw, 1125px" /><br />
<img loading="lazy" decoding="async" width="948" height="416" src="/wp-content/uploads/2018/05/word-image-4268.png" class="wp-image-4744" srcset="/wp-content/uploads/2018/05/word-image-4268.png 948w, /wp-content/uploads/2018/05/word-image-4268-300x132.png 300w, /wp-content/uploads/2018/05/word-image-4268-768x337.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<h3>5.2.2、实现入库</h3>
<p>
  ①修改方法处理数据提交入库
</p>
<p><img loading="lazy" decoding="async" width="1092" height="703" src="/wp-content/uploads/2018/05/word-image-4269.png" class="wp-image-4745" srcset="/wp-content/uploads/2018/05/word-image-4269.png 1092w, /wp-content/uploads/2018/05/word-image-4269-300x193.png 300w, /wp-content/uploads/2018/05/word-image-4269-768x494.png 768w, /wp-content/uploads/2018/05/word-image-4269-1024x659.png 1024w" sizes="(max-width: 1092px) 100vw, 1092px" /></p>
<p>
  ②创建模型类
</p>
<p><img loading="lazy" decoding="async" width="780" height="473" src="/wp-content/uploads/2018/05/word-image-4270.png" class="wp-image-4746" srcset="/wp-content/uploads/2018/05/word-image-4270.png 780w, /wp-content/uploads/2018/05/word-image-4270-300x182.png 300w, /wp-content/uploads/2018/05/word-image-4270-768x466.png 768w" sizes="(max-width: 780px) 100vw, 780px" /></p>
<p>
  ③添加字段定义
</p>
<p><img loading="lazy" decoding="async" width="1098" height="539" src="/wp-content/uploads/2018/05/word-image-4271.png" class="wp-image-4747" srcset="/wp-content/uploads/2018/05/word-image-4271.png 1098w, /wp-content/uploads/2018/05/word-image-4271-300x147.png 300w, /wp-content/uploads/2018/05/word-image-4271-768x377.png 768w, /wp-content/uploads/2018/05/word-image-4271-1024x503.png 1024w" sizes="(max-width: 1098px) 100vw, 1098px" /></p>
<p>
  ④创建验证规则
</p>
<p><img loading="lazy" decoding="async" width="1064" height="640" src="/wp-content/uploads/2018/05/word-image-4272.png" class="wp-image-4748" srcset="/wp-content/uploads/2018/05/word-image-4272.png 1064w, /wp-content/uploads/2018/05/word-image-4272-300x180.png 300w, /wp-content/uploads/2018/05/word-image-4272-768x462.png 768w, /wp-content/uploads/2018/05/word-image-4272-1024x616.png 1024w" sizes="(max-width: 1064px) 100vw, 1064px" /></p>
<p>
  ⑤增加添加数据的前置钩子函数
</p>
<p><img loading="lazy" decoding="async" width="1103" height="700" src="/wp-content/uploads/2018/05/word-image-4273.png" class="wp-image-4749" srcset="/wp-content/uploads/2018/05/word-image-4273.png 1103w, /wp-content/uploads/2018/05/word-image-4273-300x190.png 300w, /wp-content/uploads/2018/05/word-image-4273-768x487.png 768w, /wp-content/uploads/2018/05/word-image-4273-1024x650.png 1024w" sizes="(max-width: 1103px) 100vw, 1103px" /></p>
<p>
  ⑥修改钩子函数增加价格判断
</p>
<p><img loading="lazy" decoding="async" width="986" height="653" src="/wp-content/uploads/2018/05/word-image-4274.png" class="wp-image-4750" srcset="/wp-content/uploads/2018/05/word-image-4274.png 986w, /wp-content/uploads/2018/05/word-image-4274-300x199.png 300w, /wp-content/uploads/2018/05/word-image-4274-768x509.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></p>
<h2>5.3、使用ueditor实现商品详情</h2>
<h3>5.3.1、项目中使用ueditor</h3>
<p>
  ①拷贝源码
</p>
<p><img loading="lazy" decoding="async" width="1334" height="435" src="/wp-content/uploads/2018/05/word-image-4275.png" class="wp-image-4751" srcset="/wp-content/uploads/2018/05/word-image-4275.png 1334w, /wp-content/uploads/2018/05/word-image-4275-300x98.png 300w, /wp-content/uploads/2018/05/word-image-4275-768x250.png 768w, /wp-content/uploads/2018/05/word-image-4275-1024x334.png 1024w" sizes="(max-width: 1334px) 100vw, 1334px" /></p>
<p>
  ②在添加模板中引入编辑器的js文件
</p>
<p><img loading="lazy" decoding="async" width="1196" height="707" src="/wp-content/uploads/2018/05/word-image-4276.png" class="wp-image-4752" srcset="/wp-content/uploads/2018/05/word-image-4276.png 1196w, /wp-content/uploads/2018/05/word-image-4276-300x177.png 300w, /wp-content/uploads/2018/05/word-image-4276-768x454.png 768w, /wp-content/uploads/2018/05/word-image-4276-1024x605.png 1024w" sizes="(max-width: 1196px) 100vw, 1196px" /></p>
<h3>5.3.2、实现选项卡效果</h3>
<p>
  ①修改选项卡标签
</p>
<p><img loading="lazy" decoding="async" width="1018" height="340" src="/wp-content/uploads/2018/05/word-image-4277.png" class="wp-image-4753" srcset="/wp-content/uploads/2018/05/word-image-4277.png 1018w, /wp-content/uploads/2018/05/word-image-4277-300x100.png 300w, /wp-content/uploads/2018/05/word-image-4277-768x257.png 768w" sizes="(max-width: 1018px) 100vw, 1018px" /></p>
<p>
  ②修改商品详情使用选项卡
</p>
<p><img loading="lazy" decoding="async" width="1099" height="662" src="/wp-content/uploads/2018/05/word-image-4278.png" class="wp-image-4754" srcset="/wp-content/uploads/2018/05/word-image-4278.png 1099w, /wp-content/uploads/2018/05/word-image-4278-300x181.png 300w, /wp-content/uploads/2018/05/word-image-4278-768x463.png 768w, /wp-content/uploads/2018/05/word-image-4278-1024x617.png 1024w" sizes="(max-width: 1099px) 100vw, 1099px" /></p>
<p>
  ③修改父模板引入jQuery
</p>
<p><img loading="lazy" decoding="async" width="1148" height="684" src="/wp-content/uploads/2018/05/word-image-4279.png" class="wp-image-4755" srcset="/wp-content/uploads/2018/05/word-image-4279.png 1148w, /wp-content/uploads/2018/05/word-image-4279-300x179.png 300w, /wp-content/uploads/2018/05/word-image-4279-768x458.png 768w, /wp-content/uploads/2018/05/word-image-4279-1024x610.png 1024w" sizes="(max-width: 1148px) 100vw, 1148px" /></p>
<p>
  ④实现切换效果
</p>
<p><img loading="lazy" decoding="async" width="1027" height="598" src="/wp-content/uploads/2018/05/word-image-4280.png" class="wp-image-4756" srcset="/wp-content/uploads/2018/05/word-image-4280.png 1027w, /wp-content/uploads/2018/05/word-image-4280-300x175.png 300w, /wp-content/uploads/2018/05/word-image-4280-768x447.png 768w, /wp-content/uploads/2018/05/word-image-4280-1024x596.png 1024w" sizes="(max-width: 1027px) 100vw, 1027px" /></p>
<h3>5.3.3、查看ueditor文件上传的流程(了解)</h3>
<p>
  ①抓包查找文件上传地址
</p>
<p><img loading="lazy" decoding="async" width="1177" height="531" src="/wp-content/uploads/2018/05/word-image-4281.png" class="wp-image-4757" srcset="/wp-content/uploads/2018/05/word-image-4281.png 1177w, /wp-content/uploads/2018/05/word-image-4281-300x135.png 300w, /wp-content/uploads/2018/05/word-image-4281-768x346.png 768w, /wp-content/uploads/2018/05/word-image-4281-1024x462.png 1024w" sizes="(max-width: 1177px) 100vw, 1177px" /></p>
<p>
  ②查看controller.php
</p>
<p><img loading="lazy" decoding="async" width="1008" height="698" src="/wp-content/uploads/2018/05/word-image-4282.png" class="wp-image-4758" srcset="/wp-content/uploads/2018/05/word-image-4282.png 1008w, /wp-content/uploads/2018/05/word-image-4282-300x208.png 300w, /wp-content/uploads/2018/05/word-image-4282-768x532.png 768w" sizes="(max-width: 1008px) 100vw, 1008px" /></p>
<p>
  ③查看action_upload.php
</p>
<p><img loading="lazy" decoding="async" width="970" height="627" src="/wp-content/uploads/2018/05/word-image-4283.png" class="wp-image-4759" srcset="/wp-content/uploads/2018/05/word-image-4283.png 970w, /wp-content/uploads/2018/05/word-image-4283-300x194.png 300w, /wp-content/uploads/2018/05/word-image-4283-768x496.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></p>
<p>
  ④查看upload类
</p>
<p><img loading="lazy" decoding="async" width="1016" height="607" src="/wp-content/uploads/2018/05/word-image-4284.png" class="wp-image-4760" srcset="/wp-content/uploads/2018/05/word-image-4284.png 1016w, /wp-content/uploads/2018/05/word-image-4284-300x179.png 300w, /wp-content/uploads/2018/05/word-image-4284-768x459.png 768w" sizes="(max-width: 1016px) 100vw, 1016px" /></p>
<p>
  对于上图的upFile及实现了文件上传的功能，关于需要修改上传逻辑的可以在下图中代码实现
</p>
<p><img loading="lazy" decoding="async" width="989" height="500" src="/wp-content/uploads/2018/05/word-image-4285.png" class="wp-image-4761" srcset="/wp-content/uploads/2018/05/word-image-4285.png 989w, /wp-content/uploads/2018/05/word-image-4285-300x152.png 300w, /wp-content/uploads/2018/05/word-image-4285-768x388.png 768w" sizes="(max-width: 989px) 100vw, 989px" /></p>
<h2>5.3、实现图片上传</h2>
<h3>5.3.1、TP中的文件上传功能</h3>
<p>
  ①查看文件上传的配置信息
</p>
<p><img loading="lazy" decoding="async" width="987" height="702" src="/wp-content/uploads/2018/05/word-image-4286.png" class="wp-image-4762" srcset="/wp-content/uploads/2018/05/word-image-4286.png 987w, /wp-content/uploads/2018/05/word-image-4286-300x213.png 300w, /wp-content/uploads/2018/05/word-image-4286-768x546.png 768w" sizes="(max-width: 987px) 100vw, 987px" /></p>
<p>
  ②查看文件上传的方法
</p>
<p><img loading="lazy" decoding="async" width="966" height="650" src="/wp-content/uploads/2018/05/word-image-4287.png" class="wp-image-4763" srcset="/wp-content/uploads/2018/05/word-image-4287.png 966w, /wp-content/uploads/2018/05/word-image-4287-300x202.png 300w, /wp-content/uploads/2018/05/word-image-4287-768x517.png 768w" sizes="(max-width: 966px) 100vw, 966px" /></p>
<h3>5.3.2、具体实现文件上传</h3>
<p>
  ①创建测试方法显示上传表单
</p>
<p><img loading="lazy" decoding="async" width="805" height="411" src="/wp-content/uploads/2018/05/word-image-4288.png" class="wp-image-4764" srcset="/wp-content/uploads/2018/05/word-image-4288.png 805w, /wp-content/uploads/2018/05/word-image-4288-300x153.png 300w, /wp-content/uploads/2018/05/word-image-4288-768x392.png 768w" sizes="(max-width: 805px) 100vw, 805px" /></p>
<p>
  ②处理上传的表单
</p>
<p><img loading="lazy" decoding="async" width="1055" height="653" src="/wp-content/uploads/2018/05/word-image-4289.png" class="wp-image-4765" srcset="/wp-content/uploads/2018/05/word-image-4289.png 1055w, /wp-content/uploads/2018/05/word-image-4289-300x186.png 300w, /wp-content/uploads/2018/05/word-image-4289-768x475.png 768w, /wp-content/uploads/2018/05/word-image-4289-1024x634.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /></p>
<p>
  ③实现文件上传
</p>
<p><img loading="lazy" decoding="async" width="986" height="686" src="/wp-content/uploads/2018/05/word-image-4290.png" class="wp-image-4766" srcset="/wp-content/uploads/2018/05/word-image-4290.png 986w, /wp-content/uploads/2018/05/word-image-4290-300x209.png 300w, /wp-content/uploads/2018/05/word-image-4290-768x534.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></p>
<p>
  ④查看效果
</p>
<p><img loading="lazy" decoding="async" width="491" height="204" src="/wp-content/uploads/2018/05/word-image-4291.png" class="wp-image-4767" srcset="/wp-content/uploads/2018/05/word-image-4291.png 491w, /wp-content/uploads/2018/05/word-image-4291-300x125.png 300w" sizes="(max-width: 491px) 100vw, 491px" /></p>
<p>
  ⑤手动创建上传的根目录
</p>
<p><img loading="lazy" decoding="async" width="732" height="292" src="/wp-content/uploads/2018/05/word-image-4292.png" class="wp-image-4768" srcset="/wp-content/uploads/2018/05/word-image-4292.png 732w, /wp-content/uploads/2018/05/word-image-4292-300x120.png 300w" sizes="(max-width: 732px) 100vw, 732px" /></p>
<p>
  ⑤再次查看效果
</p>
<p><img loading="lazy" decoding="async" width="578" height="328" src="/wp-content/uploads/2018/05/word-image-4293.png" class="wp-image-4769" srcset="/wp-content/uploads/2018/05/word-image-4293.png 578w, /wp-content/uploads/2018/05/word-image-4293-300x170.png 300w" sizes="(max-width: 578px) 100vw, 578px" /></p>
<h3>5.3.3、在项目中使用文件上传</h3>
<p>
  ①修改添加的前置钩子函数实现文件上传
</p>
<p><img loading="lazy" decoding="async" width="1025" height="671" src="/wp-content/uploads/2018/05/word-image-4294.png" class="wp-image-4770" srcset="/wp-content/uploads/2018/05/word-image-4294.png 1025w, /wp-content/uploads/2018/05/word-image-4294-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4294-768x503.png 768w, /wp-content/uploads/2018/05/word-image-4294-1024x670.png 1024w" sizes="(max-width: 1025px) 100vw, 1025px" /><br />
<img loading="lazy" decoding="async" width="996" height="587" src="/wp-content/uploads/2018/05/word-image-4295.png" class="wp-image-4771" srcset="/wp-content/uploads/2018/05/word-image-4295.png 996w, /wp-content/uploads/2018/05/word-image-4295-300x177.png 300w, /wp-content/uploads/2018/05/word-image-4295-768x453.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></p>
<p>
  ②查看结果
</p>
<p><img loading="lazy" decoding="async" width="1090" height="446" src="/wp-content/uploads/2018/05/word-image-4296.png" class="wp-image-4772" srcset="/wp-content/uploads/2018/05/word-image-4296.png 1090w, /wp-content/uploads/2018/05/word-image-4296-300x123.png 300w, /wp-content/uploads/2018/05/word-image-4296-768x314.png 768w, /wp-content/uploads/2018/05/word-image-4296-1024x419.png 1024w" sizes="(max-width: 1090px) 100vw, 1090px" /></p>
<p>
  ③修改前置钩子函数的文件上传
</p>
<p><img loading="lazy" decoding="async" width="1041" height="631" src="/wp-content/uploads/2018/05/word-image-4297.png" class="wp-image-4773" srcset="/wp-content/uploads/2018/05/word-image-4297.png 1041w, /wp-content/uploads/2018/05/word-image-4297-300x182.png 300w, /wp-content/uploads/2018/05/word-image-4297-768x466.png 768w, /wp-content/uploads/2018/05/word-image-4297-1024x621.png 1024w" sizes="(max-width: 1041px) 100vw, 1041px" /></p>
<h2>5.4、处理商品的缩略图</h2>
<h3>5.4.1、生成缩略图流程</h3>
<ol>
<li>
  实例化Image对象
</li>
<li>
  使用对象打开图片
</li>
<li>
  指定方法对图片进行处理，并且将图片进行保存
</li>
</ol>
<h3>5.4.2、生成商品的缩略图</h3>
<p>
  ①修改添加的前置钩子函数
</p>
<p><img loading="lazy" decoding="async" width="1039" height="688" src="/wp-content/uploads/2018/05/word-image-4298.png" class="wp-image-4774" srcset="/wp-content/uploads/2018/05/word-image-4298.png 1039w, /wp-content/uploads/2018/05/word-image-4298-300x199.png 300w, /wp-content/uploads/2018/05/word-image-4298-768x509.png 768w, /wp-content/uploads/2018/05/word-image-4298-1024x678.png 1024w" sizes="(max-width: 1039px) 100vw, 1039px" /></p>
<p>
  针对文件上传成功之后在处理图片
</p>
<p>
  ②查看效果
</p>
<p><img loading="lazy" decoding="async" width="628" height="253" src="/wp-content/uploads/2018/05/word-image-4299.png" class="wp-image-4775" srcset="/wp-content/uploads/2018/05/word-image-4299.png 628w, /wp-content/uploads/2018/05/word-image-4299-300x121.png 300w" sizes="(max-width: 628px) 100vw, 628px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4706.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TP3.2商城 （二）图片异步上传、商品列表、缓存、商品编辑、商品类型</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4627.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4627.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 12:59:04 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[商品列表]]></category>
		<category><![CDATA[商品类型]]></category>
		<category><![CDATA[商品编辑]]></category>
		<category><![CDATA[图片异步上传]]></category>
		<category><![CDATA[缓存]]></category>
		<guid isPermaLink="false">/?p=4627</guid>

					<description><![CDATA[添加商品图片异步上传 1.1、查看layUI使用方式 ①引入对应的js文件 ②查看文件上传使用方式 1.2、项 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>添加商品图片异步上传</h1>
<h2>1.1、查看layUI使用方式</h2>
<p>
  ①引入对应的js文件
</p>
<p><img loading="lazy" decoding="async" width="840" height="455" src="/wp-content/uploads/2018/05/word-image-4154.png" class="wp-image-4628" srcset="/wp-content/uploads/2018/05/word-image-4154.png 840w, /wp-content/uploads/2018/05/word-image-4154-300x163.png 300w, /wp-content/uploads/2018/05/word-image-4154-768x416.png 768w" sizes="(max-width: 840px) 100vw, 840px" /></p>
<p>
  ②查看文件上传使用方式
</p>
<p><img loading="lazy" decoding="async" width="785" height="627" src="/wp-content/uploads/2018/05/word-image-4155.png" class="wp-image-4629" srcset="/wp-content/uploads/2018/05/word-image-4155.png 785w, /wp-content/uploads/2018/05/word-image-4155-300x240.png 300w, /wp-content/uploads/2018/05/word-image-4155-768x613.png 768w" sizes="(max-width: 785px) 100vw, 785px" /></p>
<h2>1.2、项目中使用文件上传</h2>
<p>
  ①将资源文件拷贝到项目中
</p>
<p><img loading="lazy" decoding="async" width="1068" height="324" src="/wp-content/uploads/2018/05/word-image-4156.png" class="wp-image-4630" srcset="/wp-content/uploads/2018/05/word-image-4156.png 1068w, /wp-content/uploads/2018/05/word-image-4156-300x91.png 300w, /wp-content/uploads/2018/05/word-image-4156-768x233.png 768w, /wp-content/uploads/2018/05/word-image-4156-1024x311.png 1024w" sizes="(max-width: 1068px) 100vw, 1068px" /></p>
<p>
  ②引入layui的js文件
</p>
<p><img loading="lazy" decoding="async" width="986" height="263" src="/wp-content/uploads/2018/05/word-image-4157.png" class="wp-image-4631" srcset="/wp-content/uploads/2018/05/word-image-4157.png 986w, /wp-content/uploads/2018/05/word-image-4157-300x80.png 300w, /wp-content/uploads/2018/05/word-image-4157-768x205.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></p>
<p>
  ③修改文件上传的type类型
</p>
<p><img loading="lazy" decoding="async" width="1003" height="385" src="/wp-content/uploads/2018/05/word-image-4158.png" class="wp-image-4632" srcset="/wp-content/uploads/2018/05/word-image-4158.png 1003w, /wp-content/uploads/2018/05/word-image-4158-300x115.png 300w, /wp-content/uploads/2018/05/word-image-4158-768x295.png 768w" sizes="(max-width: 1003px) 100vw, 1003px" /></p>
<p>
  ④对文件上传绑定切换事件
</p>
<p><img loading="lazy" decoding="async" width="962" height="640" src="/wp-content/uploads/2018/05/word-image-4159.png" class="wp-image-4633" srcset="/wp-content/uploads/2018/05/word-image-4159.png 962w, /wp-content/uploads/2018/05/word-image-4159-300x200.png 300w, /wp-content/uploads/2018/05/word-image-4159-768x511.png 768w" sizes="(max-width: 962px) 100vw, 962px" /></p>
<p>
  ⑤创建upload方法
</p>
<p>
  先抓包结果如下
</p>
<p><img loading="lazy" decoding="async" width="1031" height="534" src="/wp-content/uploads/2018/05/word-image-4160.png" class="wp-image-4634" srcset="/wp-content/uploads/2018/05/word-image-4160.png 1031w, /wp-content/uploads/2018/05/word-image-4160-300x155.png 300w, /wp-content/uploads/2018/05/word-image-4160-768x398.png 768w, /wp-content/uploads/2018/05/word-image-4160-1024x530.png 1024w" sizes="(max-width: 1031px) 100vw, 1031px" /><br />
<img loading="lazy" decoding="async" width="1039" height="672" src="/wp-content/uploads/2018/05/word-image-4161.png" class="wp-image-4635" srcset="/wp-content/uploads/2018/05/word-image-4161.png 1039w, /wp-content/uploads/2018/05/word-image-4161-300x194.png 300w, /wp-content/uploads/2018/05/word-image-4161-768x497.png 768w, /wp-content/uploads/2018/05/word-image-4161-1024x662.png 1024w" sizes="(max-width: 1039px) 100vw, 1039px" /><br />
<img loading="lazy" decoding="async" width="1030" height="303" src="/wp-content/uploads/2018/05/word-image-4162.png" class="wp-image-4636" srcset="/wp-content/uploads/2018/05/word-image-4162.png 1030w, /wp-content/uploads/2018/05/word-image-4162-300x88.png 300w, /wp-content/uploads/2018/05/word-image-4162-768x226.png 768w, /wp-content/uploads/2018/05/word-image-4162-1024x301.png 1024w" sizes="(max-width: 1030px) 100vw, 1030px" /></p>
<p>
  ⑥修改模板增加img显示上传结果
</p>
<p><img loading="lazy" decoding="async" width="1010" height="493" src="/wp-content/uploads/2018/05/word-image-4163.png" class="wp-image-4637" srcset="/wp-content/uploads/2018/05/word-image-4163.png 1010w, /wp-content/uploads/2018/05/word-image-4163-300x146.png 300w, /wp-content/uploads/2018/05/word-image-4163-768x375.png 768w" sizes="(max-width: 1010px) 100vw, 1010px" /></p>
<p>
  ⑦修改js处理文件上传成功
</p>
<p><img loading="lazy" decoding="async" width="1022" height="598" src="/wp-content/uploads/2018/05/word-image-4164.png" class="wp-image-4638" srcset="/wp-content/uploads/2018/05/word-image-4164.png 1022w, /wp-content/uploads/2018/05/word-image-4164-300x176.png 300w, /wp-content/uploads/2018/05/word-image-4164-768x449.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></p>
<p>
  ⑧修改商品添加的HTML
</p>
<p><img loading="lazy" decoding="async" width="1045" height="451" src="/wp-content/uploads/2018/05/word-image-4165.png" class="wp-image-4639" srcset="/wp-content/uploads/2018/05/word-image-4165.png 1045w, /wp-content/uploads/2018/05/word-image-4165-300x129.png 300w, /wp-content/uploads/2018/05/word-image-4165-768x331.png 768w, /wp-content/uploads/2018/05/word-image-4165-1024x442.png 1024w" sizes="(max-width: 1045px) 100vw, 1045px" /></p>
<p>
  ⑨修改js
</p>
<p><img loading="lazy" decoding="async" width="1037" height="650" src="/wp-content/uploads/2018/05/word-image-4166.png" class="wp-image-4640" srcset="/wp-content/uploads/2018/05/word-image-4166.png 1037w, /wp-content/uploads/2018/05/word-image-4166-300x188.png 300w, /wp-content/uploads/2018/05/word-image-4166-768x481.png 768w, /wp-content/uploads/2018/05/word-image-4166-1024x642.png 1024w" sizes="(max-width: 1037px) 100vw, 1037px" /></p>
<p>
  ⑩修改添加的前置钩子函数删除文件上传代码
</p>
<p><img loading="lazy" decoding="async" width="1000" height="662" src="/wp-content/uploads/2018/05/word-image-4167.png" class="wp-image-4641" srcset="/wp-content/uploads/2018/05/word-image-4167.png 1000w, /wp-content/uploads/2018/05/word-image-4167-300x199.png 300w, /wp-content/uploads/2018/05/word-image-4167-768x508.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
<p>
  由于目前文件上传使用了异步的方式因此此处的代码多余
</p>
<h2>1.3、使用ajaxReturn返回结果</h2>
<p>
  ①查看ajaxReturn方法的使用方式
</p>
<p><img loading="lazy" decoding="async" width="1001" height="632" src="/wp-content/uploads/2018/05/word-image-4168.png" class="wp-image-4642" srcset="/wp-content/uploads/2018/05/word-image-4168.png 1001w, /wp-content/uploads/2018/05/word-image-4168-300x189.png 300w, /wp-content/uploads/2018/05/word-image-4168-768x485.png 768w" sizes="(max-width: 1001px) 100vw, 1001px" /></p>
<p>
  ②修改upload方法使用ajaxReturn
</p>
<p><img loading="lazy" decoding="async" width="1038" height="673" src="/wp-content/uploads/2018/05/word-image-4169.png" class="wp-image-4643" srcset="/wp-content/uploads/2018/05/word-image-4169.png 1038w, /wp-content/uploads/2018/05/word-image-4169-300x195.png 300w, /wp-content/uploads/2018/05/word-image-4169-768x498.png 768w, /wp-content/uploads/2018/05/word-image-4169-1024x664.png 1024w" sizes="(max-width: 1038px) 100vw, 1038px" /></p>
<h1>商品列表</h1>
<h2>2.1、实现显示商品的列表</h2>
<p>
  ①在控制器中增加方法
</p>
<p><img loading="lazy" decoding="async" width="948" height="523" src="/wp-content/uploads/2018/05/word-image-4170.png" class="wp-image-4644" srcset="/wp-content/uploads/2018/05/word-image-4170.png 948w, /wp-content/uploads/2018/05/word-image-4170-300x166.png 300w, /wp-content/uploads/2018/05/word-image-4170-768x424.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  ②在模型中增加listData方法获取数据
</p>
<p>
  <br />
  ③拷贝模板
</p>
<p><img loading="lazy" decoding="async" width="710" height="428" src="/wp-content/uploads/2018/05/word-image-4171.png" class="wp-image-4645" srcset="/wp-content/uploads/2018/05/word-image-4171.png 710w, /wp-content/uploads/2018/05/word-image-4171-300x181.png 300w" sizes="(max-width: 710px) 100vw, 710px" /><br />
<img loading="lazy" decoding="async" width="1100" height="457" src="/wp-content/uploads/2018/05/word-image-4172.png" class="wp-image-4646" srcset="/wp-content/uploads/2018/05/word-image-4172.png 1100w, /wp-content/uploads/2018/05/word-image-4172-300x125.png 300w, /wp-content/uploads/2018/05/word-image-4172-768x319.png 768w, /wp-content/uploads/2018/05/word-image-4172-1024x425.png 1024w" sizes="(max-width: 1100px) 100vw, 1100px" /></p>
<p>
  ④修改模板
</p>
<p><img loading="lazy" decoding="async" width="1026" height="688" src="/wp-content/uploads/2018/05/word-image-4173.png" class="wp-image-4647" srcset="/wp-content/uploads/2018/05/word-image-4173.png 1026w, /wp-content/uploads/2018/05/word-image-4173-300x201.png 300w, /wp-content/uploads/2018/05/word-image-4173-768x515.png 768w, /wp-content/uploads/2018/05/word-image-4173-1024x687.png 1024w" sizes="(max-width: 1026px) 100vw, 1026px" /><br />
<img loading="lazy" decoding="async" width="1000" height="586" src="/wp-content/uploads/2018/05/word-image-4174.png" class="wp-image-4648" srcset="/wp-content/uploads/2018/05/word-image-4174.png 1000w, /wp-content/uploads/2018/05/word-image-4174-300x176.png 300w, /wp-content/uploads/2018/05/word-image-4174-768x450.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /><br />
<img loading="lazy" decoding="async" width="1029" height="558" src="/wp-content/uploads/2018/05/word-image-4175.png" class="wp-image-4649" srcset="/wp-content/uploads/2018/05/word-image-4175.png 1029w, /wp-content/uploads/2018/05/word-image-4175-300x163.png 300w, /wp-content/uploads/2018/05/word-image-4175-768x416.png 768w, /wp-content/uploads/2018/05/word-image-4175-1024x555.png 1024w" sizes="(max-width: 1029px) 100vw, 1029px" /><br />
<img loading="lazy" decoding="async" width="1013" height="589" src="/wp-content/uploads/2018/05/word-image-4176.png" class="wp-image-4650" srcset="/wp-content/uploads/2018/05/word-image-4176.png 1013w, /wp-content/uploads/2018/05/word-image-4176-300x174.png 300w, /wp-content/uploads/2018/05/word-image-4176-768x447.png 768w" sizes="(max-width: 1013px) 100vw, 1013px" /><br />
<img loading="lazy" decoding="async" width="982" height="166" src="/wp-content/uploads/2018/05/word-image-4177.png" class="wp-image-4651" srcset="/wp-content/uploads/2018/05/word-image-4177.png 982w, /wp-content/uploads/2018/05/word-image-4177-300x51.png 300w, /wp-content/uploads/2018/05/word-image-4177-768x130.png 768w" sizes="(max-width: 982px) 100vw, 982px" /></p>
<h2>2.2、实现分页显示商品列表</h2>
<p>
  ①修改listData方法
</p>
<p><img loading="lazy" decoding="async" width="962" height="677" src="/wp-content/uploads/2018/05/word-image-4178.png" class="wp-image-4652" srcset="/wp-content/uploads/2018/05/word-image-4178.png 962w, /wp-content/uploads/2018/05/word-image-4178-300x211.png 300w, /wp-content/uploads/2018/05/word-image-4178-768x540.png 768w" sizes="(max-width: 962px) 100vw, 962px" /></p>
<p>
  ②修改模板
</p>
<p>
  修改循环的变量
</p>
<p><img loading="lazy" decoding="async" width="1012" height="492" src="/wp-content/uploads/2018/05/word-image-4179.png" class="wp-image-4653" srcset="/wp-content/uploads/2018/05/word-image-4179.png 1012w, /wp-content/uploads/2018/05/word-image-4179-300x146.png 300w, /wp-content/uploads/2018/05/word-image-4179-768x373.png 768w" sizes="(max-width: 1012px) 100vw, 1012px" /></p>
<p>
  修改使用分页
</p>
<p><img loading="lazy" decoding="async" width="925" height="483" src="/wp-content/uploads/2018/05/word-image-4180.png" class="wp-image-4654" srcset="/wp-content/uploads/2018/05/word-image-4180.png 925w, /wp-content/uploads/2018/05/word-image-4180-300x157.png 300w, /wp-content/uploads/2018/05/word-image-4180-768x401.png 768w" sizes="(max-width: 925px) 100vw, 925px" /></p>
<h2>2.3、获取分类名称</h2>
<p>
  修改listData方法链表查询分类名称
</p>
<p><img loading="lazy" decoding="async" width="1002" height="487" src="/wp-content/uploads/2018/05/word-image-4181.png" class="wp-image-4655" srcset="/wp-content/uploads/2018/05/word-image-4181.png 1002w, /wp-content/uploads/2018/05/word-image-4181-300x146.png 300w, /wp-content/uploads/2018/05/word-image-4181-768x373.png 768w" sizes="(max-width: 1002px) 100vw, 1002px" /></p>
<h2>2.4、商品搜索</h2>
<h3>2.4.1、显示搜索的分类</h3>
<p>
  ①index方法获取所有的分类信息
</p>
<p><img loading="lazy" decoding="async" width="894" height="565" src="/wp-content/uploads/2018/05/word-image-4182.png" class="wp-image-4656" srcset="/wp-content/uploads/2018/05/word-image-4182.png 894w, /wp-content/uploads/2018/05/word-image-4182-300x190.png 300w, /wp-content/uploads/2018/05/word-image-4182-768x485.png 768w" sizes="(max-width: 894px) 100vw, 894px" /></p>
<p>
  ②修改模板显示分类
</p>
<p><img loading="lazy" decoding="async" width="1030" height="562" src="/wp-content/uploads/2018/05/word-image-4183.png" class="wp-image-4657" srcset="/wp-content/uploads/2018/05/word-image-4183.png 1030w, /wp-content/uploads/2018/05/word-image-4183-300x164.png 300w, /wp-content/uploads/2018/05/word-image-4183-768x419.png 768w, /wp-content/uploads/2018/05/word-image-4183-1024x559.png 1024w" sizes="(max-width: 1030px) 100vw, 1030px" /></p>
<h3>2.4.2、根据搜索的提交获取数据</h3>
<p>
  根据条件对商品进行搜索本质就是表单提交。对于表单提交想要去获取到对应的条件的商品信息就需要去组装sql语句中的where条件
</p>
<p>
  修改listData方法
</p>
<p><img loading="lazy" decoding="async" width="1005" height="669" src="/wp-content/uploads/2018/05/word-image-4184.png" class="wp-image-4658" srcset="/wp-content/uploads/2018/05/word-image-4184.png 1005w, /wp-content/uploads/2018/05/word-image-4184-300x200.png 300w, /wp-content/uploads/2018/05/word-image-4184-768x511.png 768w" sizes="(max-width: 1005px) 100vw, 1005px" /><br />
<img loading="lazy" decoding="async" width="1038" height="606" src="/wp-content/uploads/2018/05/word-image-4185.png" class="wp-image-4659" srcset="/wp-content/uploads/2018/05/word-image-4185.png 1038w, /wp-content/uploads/2018/05/word-image-4185-300x175.png 300w, /wp-content/uploads/2018/05/word-image-4185-768x448.png 768w, /wp-content/uploads/2018/05/word-image-4185-1024x598.png 1024w" sizes="(max-width: 1038px) 100vw, 1038px" /><br />
<img loading="lazy" decoding="async" width="1013" height="478" src="/wp-content/uploads/2018/05/word-image-4186.png" class="wp-image-4660" srcset="/wp-content/uploads/2018/05/word-image-4186.png 1013w, /wp-content/uploads/2018/05/word-image-4186-300x142.png 300w, /wp-content/uploads/2018/05/word-image-4186-768x362.png 768w" sizes="(max-width: 1013px) 100vw, 1013px" /></p>
<h2>2.5、对商品列表进行优化</h2>
<h3>2.5.1、实现方式</h3>
<p>
  使用替换的方式将链表查询拆分成为两次sql查询（第一次查询后期可以使用高速内存缓存系统加速）
</p>
<ol>
<li>
  先获取所有分类的信息
</li>
<li>
  根据页码获取到当前页的商品信息(单表查询)
</li>
<li>
  对商品信息进行循环根据分类的id使用第一次查询结果进行替换
</li>
</ol>
<h3>2.5.2、具体代码操作</h3>
<p>
  ①修改index方法传递分类信息作为参数
</p>
<p><img loading="lazy" decoding="async" width="906" height="599" src="/wp-content/uploads/2018/05/word-image-4187.png" class="wp-image-4661" srcset="/wp-content/uploads/2018/05/word-image-4187.png 906w, /wp-content/uploads/2018/05/word-image-4187-300x198.png 300w, /wp-content/uploads/2018/05/word-image-4187-768x508.png 768w" sizes="(max-width: 906px) 100vw, 906px" /></p>
<p>
  ②修改模型下的listData方法
</p>
<p><img loading="lazy" decoding="async" width="994" height="674" src="/wp-content/uploads/2018/05/word-image-4188.png" class="wp-image-4662" srcset="/wp-content/uploads/2018/05/word-image-4188.png 994w, /wp-content/uploads/2018/05/word-image-4188-300x203.png 300w, /wp-content/uploads/2018/05/word-image-4188-768x521.png 768w, /wp-content/uploads/2018/05/word-image-4188-220x150.png 220w" sizes="(max-width: 994px) 100vw, 994px" /><br />
<img loading="lazy" decoding="async" width="1018" height="578" src="/wp-content/uploads/2018/05/word-image-4189.png" class="wp-image-4663" srcset="/wp-content/uploads/2018/05/word-image-4189.png 1018w, /wp-content/uploads/2018/05/word-image-4189-300x170.png 300w, /wp-content/uploads/2018/05/word-image-4189-768x436.png 768w" sizes="(max-width: 1018px) 100vw, 1018px" /></p>
<h2>2.6、缓存使用(重点)</h2>
<h3>2.6.1、缓存使用的原理</h3>
<ol>
<li>
  当读取数据时。优先查询缓存系统(文件、内存)中的内容，如果读取到了数据直接使用。如果没有读取到在查询数据库获取数据，然后在将数据写入到缓存系统中
</li>
<li>
  当修改数据时，需要对缓存系统中的内容进行更新或者删除操作
</li>
</ol>
<h3>2.6.2、TP中的S函数使用</h3>
<p><img loading="lazy" decoding="async" width="1030" height="634" src="/wp-content/uploads/2018/05/word-image-4190.png" class="wp-image-4664" srcset="/wp-content/uploads/2018/05/word-image-4190.png 1030w, /wp-content/uploads/2018/05/word-image-4190-300x185.png 300w, /wp-content/uploads/2018/05/word-image-4190-768x473.png 768w, /wp-content/uploads/2018/05/word-image-4190-1024x630.png 1024w" sizes="(max-width: 1030px) 100vw, 1030px" /></p>
<h3>2.6.3、在项目中使用S函数</h3>
<p>
  ①修改listData方法使用缓存
</p>
<p><img loading="lazy" decoding="async" width="1222" height="611" src="/wp-content/uploads/2018/05/word-image-4191.png" class="wp-image-4665" srcset="/wp-content/uploads/2018/05/word-image-4191.png 1222w, /wp-content/uploads/2018/05/word-image-4191-300x150.png 300w, /wp-content/uploads/2018/05/word-image-4191-768x384.png 768w, /wp-content/uploads/2018/05/word-image-4191-1024x512.png 1024w" sizes="(max-width: 1222px) 100vw, 1222px" /></p>
<p>
  ②查看效果
</p>
<p><img loading="lazy" decoding="async" width="1285" height="482" src="/wp-content/uploads/2018/05/word-image-4192.png" class="wp-image-4666" srcset="/wp-content/uploads/2018/05/word-image-4192.png 1285w, /wp-content/uploads/2018/05/word-image-4192-300x113.png 300w, /wp-content/uploads/2018/05/word-image-4192-768x288.png 768w, /wp-content/uploads/2018/05/word-image-4192-1024x384.png 1024w" sizes="(max-width: 1285px) 100vw, 1285px" /></p>
<h3>2.6.4、针对所有的分类的使用缓存</h3>
<p>
  ①修改getTree方法
</p>
<p><img loading="lazy" decoding="async" width="1039" height="681" src="/wp-content/uploads/2018/05/word-image-4193.png" class="wp-image-4667" srcset="/wp-content/uploads/2018/05/word-image-4193.png 1039w, /wp-content/uploads/2018/05/word-image-4193-300x197.png 300w, /wp-content/uploads/2018/05/word-image-4193-768x503.png 768w, /wp-content/uploads/2018/05/word-image-4193-1024x671.png 1024w" sizes="(max-width: 1039px) 100vw, 1039px" /></p>
<p>
  ②修改listData方法
</p>
<p><img loading="lazy" decoding="async" width="1032" height="646" src="/wp-content/uploads/2018/05/word-image-4194.png" class="wp-image-4668" srcset="/wp-content/uploads/2018/05/word-image-4194.png 1032w, /wp-content/uploads/2018/05/word-image-4194-300x188.png 300w, /wp-content/uploads/2018/05/word-image-4194-768x481.png 768w, /wp-content/uploads/2018/05/word-image-4194-1024x641.png 1024w" sizes="(max-width: 1032px) 100vw, 1032px" /></p>
<p>
  ③针对分类的添加对缓存进行更新
</p>
<p><img loading="lazy" decoding="async" width="1020" height="714" src="/wp-content/uploads/2018/05/word-image-4195.png" class="wp-image-4669" srcset="/wp-content/uploads/2018/05/word-image-4195.png 1020w, /wp-content/uploads/2018/05/word-image-4195-300x210.png 300w, /wp-content/uploads/2018/05/word-image-4195-768x538.png 768w" sizes="(max-width: 1020px) 100vw, 1020px" /></p>
<p>
  ④分类到的修改更新缓存
</p>
<p><img loading="lazy" decoding="async" width="952" height="658" src="/wp-content/uploads/2018/05/word-image-4196.png" class="wp-image-4670" srcset="/wp-content/uploads/2018/05/word-image-4196.png 952w, /wp-content/uploads/2018/05/word-image-4196-300x207.png 300w, /wp-content/uploads/2018/05/word-image-4196-768x531.png 768w" sizes="(max-width: 952px) 100vw, 952px" /></p>
<p>
  ⑤删除分类更新缓存
</p>
<p><img loading="lazy" decoding="async" width="931" height="688" src="/wp-content/uploads/2018/05/word-image-4197.png" class="wp-image-4671" srcset="/wp-content/uploads/2018/05/word-image-4197.png 931w, /wp-content/uploads/2018/05/word-image-4197-300x222.png 300w, /wp-content/uploads/2018/05/word-image-4197-768x568.png 768w" sizes="(max-width: 931px) 100vw, 931px" /></p>
<h2>2.7、实现状态的点击切换</h2>
<p>
  ①修改商品列表的模板
</p>
<p><img loading="lazy" decoding="async" width="1284" height="674" src="/wp-content/uploads/2018/05/word-image-4198.png" class="wp-image-4672" srcset="/wp-content/uploads/2018/05/word-image-4198.png 1284w, /wp-content/uploads/2018/05/word-image-4198-300x157.png 300w, /wp-content/uploads/2018/05/word-image-4198-768x403.png 768w, /wp-content/uploads/2018/05/word-image-4198-1024x538.png 1024w" sizes="(max-width: 1284px) 100vw, 1284px" /></p>
<p>
  ②增加函数实现ajax
</p>
<p><img loading="lazy" decoding="async" width="955" height="676" src="/wp-content/uploads/2018/05/word-image-4199.png" class="wp-image-4673" srcset="/wp-content/uploads/2018/05/word-image-4199.png 955w, /wp-content/uploads/2018/05/word-image-4199-300x212.png 300w, /wp-content/uploads/2018/05/word-image-4199-768x544.png 768w" sizes="(max-width: 955px) 100vw, 955px" /></p>
<p>
  ③创建方法处理请求
</p>
<p><img loading="lazy" decoding="async" width="1046" height="644" src="/wp-content/uploads/2018/05/word-image-4200.png" class="wp-image-4674" srcset="/wp-content/uploads/2018/05/word-image-4200.png 1046w, /wp-content/uploads/2018/05/word-image-4200-300x185.png 300w, /wp-content/uploads/2018/05/word-image-4200-768x473.png 768w, /wp-content/uploads/2018/05/word-image-4200-1024x630.png 1024w" sizes="(max-width: 1046px) 100vw, 1046px" /><br />
<img loading="lazy" decoding="async" width="1048" height="383" src="/wp-content/uploads/2018/05/word-image-4201.png" class="wp-image-4675" srcset="/wp-content/uploads/2018/05/word-image-4201.png 1048w, /wp-content/uploads/2018/05/word-image-4201-300x110.png 300w, /wp-content/uploads/2018/05/word-image-4201-768x281.png 768w, /wp-content/uploads/2018/05/word-image-4201-1024x374.png 1024w" sizes="(max-width: 1048px) 100vw, 1048px" /></p>
<p>
  ④修改模板中代码实现图片的切换
</p>
<p><img loading="lazy" decoding="async" width="1034" height="683" src="/wp-content/uploads/2018/05/word-image-4202.png" class="wp-image-4676" srcset="/wp-content/uploads/2018/05/word-image-4202.png 1034w, /wp-content/uploads/2018/05/word-image-4202-300x198.png 300w, /wp-content/uploads/2018/05/word-image-4202-768x507.png 768w, /wp-content/uploads/2018/05/word-image-4202-1024x676.png 1024w" sizes="(max-width: 1034px) 100vw, 1034px" /></p>
<h1>商品删除</h1>
<p>
  ①增加删除的连接地址
</p>
<p><img loading="lazy" decoding="async" width="1055" height="644" src="/wp-content/uploads/2018/05/word-image-4203.png" class="wp-image-4677" srcset="/wp-content/uploads/2018/05/word-image-4203.png 1055w, /wp-content/uploads/2018/05/word-image-4203-300x183.png 300w, /wp-content/uploads/2018/05/word-image-4203-768x469.png 768w, /wp-content/uploads/2018/05/word-image-4203-1024x625.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /></p>
<p>
  ②增加方法进行删除
</p>
<p><img loading="lazy" decoding="async" width="1016" height="404" src="/wp-content/uploads/2018/05/word-image-4204.png" class="wp-image-4678" srcset="/wp-content/uploads/2018/05/word-image-4204.png 1016w, /wp-content/uploads/2018/05/word-image-4204-300x119.png 300w, /wp-content/uploads/2018/05/word-image-4204-768x305.png 768w" sizes="(max-width: 1016px) 100vw, 1016px" /></p>
<p>
  ③修改模板
</p>
<p><img loading="lazy" decoding="async" width="1072" height="693" src="/wp-content/uploads/2018/05/word-image-4205.png" class="wp-image-4679" srcset="/wp-content/uploads/2018/05/word-image-4205.png 1072w, /wp-content/uploads/2018/05/word-image-4205-300x194.png 300w, /wp-content/uploads/2018/05/word-image-4205-768x496.png 768w, /wp-content/uploads/2018/05/word-image-4205-1024x662.png 1024w" sizes="(max-width: 1072px) 100vw, 1072px" /></p>
<p>
  ④修改Goods模型下的where条件
</p>
<p><img loading="lazy" decoding="async" width="1078" height="696" src="/wp-content/uploads/2018/05/word-image-4206.png" class="wp-image-4680" srcset="/wp-content/uploads/2018/05/word-image-4206.png 1078w, /wp-content/uploads/2018/05/word-image-4206-300x194.png 300w, /wp-content/uploads/2018/05/word-image-4206-768x496.png 768w, /wp-content/uploads/2018/05/word-image-4206-1024x661.png 1024w" sizes="(max-width: 1078px) 100vw, 1078px" /></p>
<p>
  去掉了上下架的条件
</p>
<p>
  ⑤再次修改模板
</p>
<p><img loading="lazy" decoding="async" width="1046" height="697" src="/wp-content/uploads/2018/05/word-image-4207.png" class="wp-image-4681" srcset="/wp-content/uploads/2018/05/word-image-4207.png 1046w, /wp-content/uploads/2018/05/word-image-4207-300x200.png 300w, /wp-content/uploads/2018/05/word-image-4207-768x512.png 768w, /wp-content/uploads/2018/05/word-image-4207-1024x682.png 1024w" sizes="(max-width: 1046px) 100vw, 1046px" /></p>
<h1>商品回收站</h1>
<h2>4.1、商品回收站列表显示</h2>
<p>
  ①创建方法
</p>
<p><img loading="lazy" decoding="async" width="1003" height="529" src="/wp-content/uploads/2018/05/word-image-4208.png" class="wp-image-4682" srcset="/wp-content/uploads/2018/05/word-image-4208.png 1003w, /wp-content/uploads/2018/05/word-image-4208-300x158.png 300w, /wp-content/uploads/2018/05/word-image-4208-768x405.png 768w" sizes="(max-width: 1003px) 100vw, 1003px" /></p>
<p>
  ②修改模型获取数据方法
</p>
<p><img loading="lazy" decoding="async" width="1036" height="421" src="/wp-content/uploads/2018/05/word-image-4209.png" class="wp-image-4683" srcset="/wp-content/uploads/2018/05/word-image-4209.png 1036w, /wp-content/uploads/2018/05/word-image-4209-300x122.png 300w, /wp-content/uploads/2018/05/word-image-4209-768x312.png 768w, /wp-content/uploads/2018/05/word-image-4209-1024x416.png 1024w" sizes="(max-width: 1036px) 100vw, 1036px" /></p>
<p>
  ③拷贝模板并且修改
</p>
<p><img loading="lazy" decoding="async" width="1060" height="615" src="/wp-content/uploads/2018/05/word-image-4210.png" class="wp-image-4684" srcset="/wp-content/uploads/2018/05/word-image-4210.png 1060w, /wp-content/uploads/2018/05/word-image-4210-300x174.png 300w, /wp-content/uploads/2018/05/word-image-4210-768x446.png 768w, /wp-content/uploads/2018/05/word-image-4210-1024x594.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /></p>
<p>
  在index模板基础上修改操作即可
</p>
<h2>4.2、商品的还原功能</h2>
<p>
  ①修改回收站商品列表
</p>
<p><img loading="lazy" decoding="async" width="1060" height="377" src="/wp-content/uploads/2018/05/word-image-4211.png" class="wp-image-4685" srcset="/wp-content/uploads/2018/05/word-image-4211.png 1060w, /wp-content/uploads/2018/05/word-image-4211-300x107.png 300w, /wp-content/uploads/2018/05/word-image-4211-768x273.png 768w, /wp-content/uploads/2018/05/word-image-4211-1024x364.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /></p>
<p>
  ②修改dels方法
</p>
<p><img loading="lazy" decoding="async" width="1090" height="623" src="/wp-content/uploads/2018/05/word-image-4212.png" class="wp-image-4686" srcset="/wp-content/uploads/2018/05/word-image-4212.png 1090w, /wp-content/uploads/2018/05/word-image-4212-300x171.png 300w, /wp-content/uploads/2018/05/word-image-4212-768x439.png 768w, /wp-content/uploads/2018/05/word-image-4212-1024x585.png 1024w" sizes="(max-width: 1090px) 100vw, 1090px" /></p>
<h2>4.3、彻底删除</h2>
<p>
  ①修改模板对彻底删除增加连接地址
</p>
<p><img loading="lazy" decoding="async" width="1049" height="380" src="/wp-content/uploads/2018/05/word-image-4213.png" class="wp-image-4687" srcset="/wp-content/uploads/2018/05/word-image-4213.png 1049w, /wp-content/uploads/2018/05/word-image-4213-300x109.png 300w, /wp-content/uploads/2018/05/word-image-4213-768x278.png 768w, /wp-content/uploads/2018/05/word-image-4213-1024x371.png 1024w" sizes="(max-width: 1049px) 100vw, 1049px" /></p>
<p>
  ②添加方法实现删除
</p>
<p><img loading="lazy" decoding="async" width="996" height="475" src="/wp-content/uploads/2018/05/word-image-4214.png" class="wp-image-4688" srcset="/wp-content/uploads/2018/05/word-image-4214.png 996w, /wp-content/uploads/2018/05/word-image-4214-300x143.png 300w, /wp-content/uploads/2018/05/word-image-4214-768x366.png 768w" sizes="(max-width: 996px) 100vw, 996px" /></p>
<p>
  ③实现模型下的删除方法
</p>
<p><img loading="lazy" decoding="async" width="1046" height="702" src="/wp-content/uploads/2018/05/word-image-4215.png" class="wp-image-4689" srcset="/wp-content/uploads/2018/05/word-image-4215.png 1046w, /wp-content/uploads/2018/05/word-image-4215-300x201.png 300w, /wp-content/uploads/2018/05/word-image-4215-768x515.png 768w, /wp-content/uploads/2018/05/word-image-4215-1024x687.png 1024w" sizes="(max-width: 1046px) 100vw, 1046px" /></p>
<h1>商品编辑</h1>
<h2>5.1、显示原始商品信息</h2>
<p>
  ①创建方法获取原始数据
</p>
<p><img loading="lazy" decoding="async" width="1050" height="674" src="/wp-content/uploads/2018/05/word-image-4216.png" class="wp-image-4690" srcset="/wp-content/uploads/2018/05/word-image-4216.png 1050w, /wp-content/uploads/2018/05/word-image-4216-300x193.png 300w, /wp-content/uploads/2018/05/word-image-4216-768x493.png 768w, /wp-content/uploads/2018/05/word-image-4216-1024x657.png 1024w" sizes="(max-width: 1050px) 100vw, 1050px" /></p>
<p>
  ②拷贝添加模板并且修改
</p>
<p><img loading="lazy" decoding="async" width="1030" height="653" src="/wp-content/uploads/2018/05/word-image-4217.png" class="wp-image-4691" srcset="/wp-content/uploads/2018/05/word-image-4217.png 1030w, /wp-content/uploads/2018/05/word-image-4217-300x190.png 300w, /wp-content/uploads/2018/05/word-image-4217-768x487.png 768w, /wp-content/uploads/2018/05/word-image-4217-1024x649.png 1024w" sizes="(max-width: 1030px) 100vw, 1030px" /><br />
<img loading="lazy" decoding="async" width="1052" height="585" src="/wp-content/uploads/2018/05/word-image-4218.png" class="wp-image-4692" srcset="/wp-content/uploads/2018/05/word-image-4218.png 1052w, /wp-content/uploads/2018/05/word-image-4218-300x167.png 300w, /wp-content/uploads/2018/05/word-image-4218-768x427.png 768w, /wp-content/uploads/2018/05/word-image-4218-1024x569.png 1024w" sizes="(max-width: 1052px) 100vw, 1052px" /><br />
<img loading="lazy" decoding="async" width="1055" height="614" src="/wp-content/uploads/2018/05/word-image-4219.png" class="wp-image-4693" srcset="/wp-content/uploads/2018/05/word-image-4219.png 1055w, /wp-content/uploads/2018/05/word-image-4219-300x175.png 300w, /wp-content/uploads/2018/05/word-image-4219-768x447.png 768w, /wp-content/uploads/2018/05/word-image-4219-1024x596.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /><br />
<img loading="lazy" decoding="async" width="1044" height="571" src="/wp-content/uploads/2018/05/word-image-4220.png" class="wp-image-4694" srcset="/wp-content/uploads/2018/05/word-image-4220.png 1044w, /wp-content/uploads/2018/05/word-image-4220-300x164.png 300w, /wp-content/uploads/2018/05/word-image-4220-768x420.png 768w, /wp-content/uploads/2018/05/word-image-4220-1024x560.png 1024w" sizes="(max-width: 1044px) 100vw, 1044px" /><br />
<img loading="lazy" decoding="async" width="1043" height="526" src="/wp-content/uploads/2018/05/word-image-4221.png" class="wp-image-4695" srcset="/wp-content/uploads/2018/05/word-image-4221.png 1043w, /wp-content/uploads/2018/05/word-image-4221-300x151.png 300w, /wp-content/uploads/2018/05/word-image-4221-768x387.png 768w, /wp-content/uploads/2018/05/word-image-4221-1024x516.png 1024w" sizes="(max-width: 1043px) 100vw, 1043px" /><br />
<img loading="lazy" decoding="async" width="1060" height="597" src="/wp-content/uploads/2018/05/word-image-4222.png" class="wp-image-4696" srcset="/wp-content/uploads/2018/05/word-image-4222.png 1060w, /wp-content/uploads/2018/05/word-image-4222-300x169.png 300w, /wp-content/uploads/2018/05/word-image-4222-768x433.png 768w, /wp-content/uploads/2018/05/word-image-4222-1024x577.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /><br />
<img loading="lazy" decoding="async" width="1050" height="314" src="/wp-content/uploads/2018/05/word-image-4223.png" class="wp-image-4697" srcset="/wp-content/uploads/2018/05/word-image-4223.png 1050w, /wp-content/uploads/2018/05/word-image-4223-300x90.png 300w, /wp-content/uploads/2018/05/word-image-4223-768x230.png 768w, /wp-content/uploads/2018/05/word-image-4223-1024x306.png 1024w" sizes="(max-width: 1050px) 100vw, 1050px" /></p>
<h2>5.2、实现修改入库</h2>
<p>
  ①修改编辑的方法处理表单提交
</p>
<p><img loading="lazy" decoding="async" width="928" height="597" src="/wp-content/uploads/2018/05/word-image-4224.png" class="wp-image-4698" srcset="/wp-content/uploads/2018/05/word-image-4224.png 928w, /wp-content/uploads/2018/05/word-image-4224-300x193.png 300w, /wp-content/uploads/2018/05/word-image-4224-768x494.png 768w" sizes="(max-width: 928px) 100vw, 928px" /></p>
<p>
  ②增加方法实现修改
</p>
<p><img loading="lazy" decoding="async" width="1068" height="696" src="/wp-content/uploads/2018/05/word-image-4225.png" class="wp-image-4699" srcset="/wp-content/uploads/2018/05/word-image-4225.png 1068w, /wp-content/uploads/2018/05/word-image-4225-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4225-768x500.png 768w, /wp-content/uploads/2018/05/word-image-4225-1024x667.png 1024w" sizes="(max-width: 1068px) 100vw, 1068px" /><br />
<img loading="lazy" decoding="async" width="1055" height="197" src="/wp-content/uploads/2018/05/word-image-4226.png" class="wp-image-4700" srcset="/wp-content/uploads/2018/05/word-image-4226.png 1055w, /wp-content/uploads/2018/05/word-image-4226-300x56.png 300w, /wp-content/uploads/2018/05/word-image-4226-768x143.png 768w, /wp-content/uploads/2018/05/word-image-4226-1024x191.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /></p>
<h1>商品类型</h1>
<h2>6.1、商品类型介绍</h2>
<p>
  商品归属于某一个分类。通过分类可以方便用户在前台界面中对商品进行筛选。当描述商品信息时，需要将商品的具体信息表述出。例如手机又cpu、内存、存储大小，衣服有颜色，尺码。对于要描述的内容可以称为属性。
</p>
<p>
  为了描述出属性信息，可以在商品表中使用字段记录对应的信息。如果使用此方式会导致数据表特别庞大并且有很多字段时无用的。
</p>
<p>
  因此可以将属性信息保存到一格单独的数据表中(每一条记录就是一个属性)。如果只有商品表跟属性表还不能完整的描述出商品信息
</p>
<p>
  因此可以对属性做一个归类。归类及抽象一个类型出来。一个商品属于某一个类型就可以使用类型下对应的属性对商品进行描述
</p>
<p>
  注意：类型只是在后台中使用，目的是为了方便管理属性
</p>
<h2>6.2、创建类型数据表</h2>
<p>
  CREATE TABLE `shop_type` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `type_name` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;类型名称&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
</p>
<h2>6.3、类型的添加与修改</h2>
<p>
  ①控制中实现根据添加与修改时显示模板
</p>
<p><img loading="lazy" decoding="async" width="939" height="681" src="/wp-content/uploads/2018/05/word-image-4227.png" class="wp-image-4701" srcset="/wp-content/uploads/2018/05/word-image-4227.png 939w, /wp-content/uploads/2018/05/word-image-4227-300x218.png 300w, /wp-content/uploads/2018/05/word-image-4227-768x557.png 768w" sizes="(max-width: 939px) 100vw, 939px" /></p>
<p>
  ②模板中展示出数据
</p>
<p><img loading="lazy" decoding="async" width="1044" height="613" src="/wp-content/uploads/2018/05/word-image-4228.png" class="wp-image-4702" srcset="/wp-content/uploads/2018/05/word-image-4228.png 1044w, /wp-content/uploads/2018/05/word-image-4228-300x176.png 300w, /wp-content/uploads/2018/05/word-image-4228-768x451.png 768w, /wp-content/uploads/2018/05/word-image-4228-1024x601.png 1024w" sizes="(max-width: 1044px) 100vw, 1044px" /></p>
<p>
  ③创建自定义模型
</p>
<p><img loading="lazy" decoding="async" width="977" height="619" src="/wp-content/uploads/2018/05/word-image-4229.png" class="wp-image-4703" srcset="/wp-content/uploads/2018/05/word-image-4229.png 977w, /wp-content/uploads/2018/05/word-image-4229-300x190.png 300w, /wp-content/uploads/2018/05/word-image-4229-768x487.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></p>
<p>
  ④实现数据的入库
</p>
<p><img loading="lazy" decoding="async" width="956" height="690" src="/wp-content/uploads/2018/05/word-image-4230.png" class="wp-image-4704" srcset="/wp-content/uploads/2018/05/word-image-4230.png 956w, /wp-content/uploads/2018/05/word-image-4230-300x217.png 300w, /wp-content/uploads/2018/05/word-image-4230-768x554.png 768w" sizes="(max-width: 956px) 100vw, 956px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4627.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TP3.2商城 （三）类型管理、属性管理、商品属性</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4552.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4552.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 12:53:50 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[商品属性]]></category>
		<category><![CDATA[属性管理]]></category>
		<category><![CDATA[类型管理]]></category>
		<guid isPermaLink="false">/?p=4552</guid>

					<description><![CDATA[类型管理 1.1、类型的列表显示 ①增加方法 ②修改模型增加listData方法 ③处理模板 效果如下 1.2 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>类型管理</h1>
<h2>1.1、类型的列表显示</h2>
<p>
  ①增加方法
</p>
<p><img loading="lazy" decoding="async" width="686" height="494" src="/wp-content/uploads/2018/05/word-image-4081.png" class="wp-image-4553" srcset="/wp-content/uploads/2018/05/word-image-4081.png 686w, /wp-content/uploads/2018/05/word-image-4081-300x216.png 300w" sizes="(max-width: 686px) 100vw, 686px" /></p>
<p>
  ②修改模型增加listData方法
</p>
<p><img loading="lazy" decoding="async" width="884" height="658" src="/wp-content/uploads/2018/05/word-image-4082.png" class="wp-image-4554" srcset="/wp-content/uploads/2018/05/word-image-4082.png 884w, /wp-content/uploads/2018/05/word-image-4082-300x223.png 300w, /wp-content/uploads/2018/05/word-image-4082-768x572.png 768w" sizes="(max-width: 884px) 100vw, 884px" /></p>
<p>
  ③处理模板
</p>
<p><img loading="lazy" decoding="async" width="1076" height="673" src="/wp-content/uploads/2018/05/word-image-4083.png" class="wp-image-4555" srcset="/wp-content/uploads/2018/05/word-image-4083.png 1076w, /wp-content/uploads/2018/05/word-image-4083-300x188.png 300w, /wp-content/uploads/2018/05/word-image-4083-768x480.png 768w, /wp-content/uploads/2018/05/word-image-4083-1024x640.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="1334" height="265" src="/wp-content/uploads/2018/05/word-image-4084.png" class="wp-image-4556" srcset="/wp-content/uploads/2018/05/word-image-4084.png 1334w, /wp-content/uploads/2018/05/word-image-4084-300x60.png 300w, /wp-content/uploads/2018/05/word-image-4084-768x153.png 768w, /wp-content/uploads/2018/05/word-image-4084-1024x203.png 1024w" sizes="(max-width: 1334px) 100vw, 1334px" /></p>
<h2>1.2、类型的删除</h2>
<p>
  ①创建方法
</p>
<p><img loading="lazy" decoding="async" width="841" height="588" src="/wp-content/uploads/2018/05/word-image-4085.png" class="wp-image-4557" srcset="/wp-content/uploads/2018/05/word-image-4085.png 841w, /wp-content/uploads/2018/05/word-image-4085-300x210.png 300w, /wp-content/uploads/2018/05/word-image-4085-768x537.png 768w" sizes="(max-width: 841px) 100vw, 841px" /></p>
<p>
  ②定义模型的dels方法实现删除
</p>
<p><img loading="lazy" decoding="async" width="926" height="376" src="/wp-content/uploads/2018/05/word-image-4086.png" class="wp-image-4558" srcset="/wp-content/uploads/2018/05/word-image-4086.png 926w, /wp-content/uploads/2018/05/word-image-4086-300x122.png 300w, /wp-content/uploads/2018/05/word-image-4086-768x312.png 768w" sizes="(max-width: 926px) 100vw, 926px" /></p>
<h2>1.3、批量删除功能</h2>
<p>
  ①修改模板
</p>
<p><img loading="lazy" decoding="async" width="1123" height="646" src="/wp-content/uploads/2018/05/word-image-4087.png" class="wp-image-4559" srcset="/wp-content/uploads/2018/05/word-image-4087.png 1123w, /wp-content/uploads/2018/05/word-image-4087-300x173.png 300w, /wp-content/uploads/2018/05/word-image-4087-768x442.png 768w, /wp-content/uploads/2018/05/word-image-4087-1024x589.png 1024w" sizes="(max-width: 1123px) 100vw, 1123px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="1249" height="160" src="/wp-content/uploads/2018/05/word-image-4088.png" class="wp-image-4560" srcset="/wp-content/uploads/2018/05/word-image-4088.png 1249w, /wp-content/uploads/2018/05/word-image-4088-300x38.png 300w, /wp-content/uploads/2018/05/word-image-4088-768x98.png 768w, /wp-content/uploads/2018/05/word-image-4088-1024x131.png 1024w" sizes="(max-width: 1249px) 100vw, 1249px" /></p>
<p>
  ②实现全选
</p>
<p><img loading="lazy" decoding="async" width="945" height="365" src="/wp-content/uploads/2018/05/word-image-4089.png" class="wp-image-4561" srcset="/wp-content/uploads/2018/05/word-image-4089.png 945w, /wp-content/uploads/2018/05/word-image-4089-300x116.png 300w, /wp-content/uploads/2018/05/word-image-4089-768x297.png 768w" sizes="(max-width: 945px) 100vw, 945px" /></p>
<p>
  ③实现反选
</p>
<p><img loading="lazy" decoding="async" width="975" height="551" src="/wp-content/uploads/2018/05/word-image-4090.png" class="wp-image-4562" srcset="/wp-content/uploads/2018/05/word-image-4090.png 975w, /wp-content/uploads/2018/05/word-image-4090-300x170.png 300w, /wp-content/uploads/2018/05/word-image-4090-768x434.png 768w" sizes="(max-width: 975px) 100vw, 975px" /></p>
<p>
  ④点击删除触发ajax
</p>
<p><img loading="lazy" decoding="async" width="985" height="702" src="/wp-content/uploads/2018/05/word-image-4091.png" class="wp-image-4563" srcset="/wp-content/uploads/2018/05/word-image-4091.png 985w, /wp-content/uploads/2018/05/word-image-4091-300x214.png 300w, /wp-content/uploads/2018/05/word-image-4091-768x547.png 768w" sizes="(max-width: 985px) 100vw, 985px" /></p>
<p>
  ⑤修改dels方法
</p>
<p><img loading="lazy" decoding="async" width="1015" height="678" src="/wp-content/uploads/2018/05/word-image-4092.png" class="wp-image-4564" srcset="/wp-content/uploads/2018/05/word-image-4092.png 1015w, /wp-content/uploads/2018/05/word-image-4092-300x200.png 300w, /wp-content/uploads/2018/05/word-image-4092-768x513.png 768w" sizes="(max-width: 1015px) 100vw, 1015px" /></p>
<p>
  ⑥修改模型中的dels方法
</p>
<p><img loading="lazy" decoding="async" width="935" height="610" src="/wp-content/uploads/2018/05/word-image-4093.png" class="wp-image-4565" srcset="/wp-content/uploads/2018/05/word-image-4093.png 935w, /wp-content/uploads/2018/05/word-image-4093-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4093-768x501.png 768w" sizes="(max-width: 935px) 100vw, 935px" /></p>
<p>
  ⑦修改前台的js
</p>
<p><img loading="lazy" decoding="async" width="1004" height="610" src="/wp-content/uploads/2018/05/word-image-4094.png" class="wp-image-4566" srcset="/wp-content/uploads/2018/05/word-image-4094.png 1004w, /wp-content/uploads/2018/05/word-image-4094-300x182.png 300w, /wp-content/uploads/2018/05/word-image-4094-768x467.png 768w" sizes="(max-width: 1004px) 100vw, 1004px" /></p>
<h1>属性管理</h1>
<h2>2.1、属性了解</h2>
<p>
  属性作用是用于描述商品信息
</p>
<h3>2.1.1、单选属性</h3>
<p><img loading="lazy" decoding="async" width="643" height="393" src="/wp-content/uploads/2018/05/word-image-4095.png" class="wp-image-4567" srcset="/wp-content/uploads/2018/05/word-image-4095.png 643w, /wp-content/uploads/2018/05/word-image-4095-300x183.png 300w" sizes="(max-width: 643px) 100vw, 643px" /></p>
<h3>2.1.2、唯一属性</h3>
<p><img loading="lazy" decoding="async" width="1002" height="198" src="/wp-content/uploads/2018/05/word-image-4096.png" class="wp-image-4568" srcset="/wp-content/uploads/2018/05/word-image-4096.png 1002w, /wp-content/uploads/2018/05/word-image-4096-300x59.png 300w, /wp-content/uploads/2018/05/word-image-4096-768x152.png 768w" sizes="(max-width: 1002px) 100vw, 1002px" /></p>
<h2>2.2、属性的录入方式</h2>
<p>
  属性录入方式可以划分为两种。一种手工输入另外一种就是列表选择
</p>
<p>
  关于属性的录入方式就是当描述商品时对应的内容，是使用选择框(列表选择)还是文本框(手工输入)
</p>
<p>
  对于属性内容是属于固定的某几个可以使用列表选择
</p>
<p>
  对于属性的内容是不固定可以使用手工输入
</p>
<p><img loading="lazy" decoding="async" width="941" height="374" src="/wp-content/uploads/2018/05/word-image-4097.png" class="wp-image-4569" srcset="/wp-content/uploads/2018/05/word-image-4097.png 941w, /wp-content/uploads/2018/05/word-image-4097-300x119.png 300w, /wp-content/uploads/2018/05/word-image-4097-768x305.png 768w" sizes="(max-width: 941px) 100vw, 941px" /></p>
<h2>2.3、实现属性入库功能</h2>
<h3>2.3.1、创建属性的数据表</h3>
<p>
  CREATE TABLE `shop_attribute` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `attr_name` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;属性名称&#8217;,
</p>
<p>
    `type_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;属性的所属类型 对应shop_type表中的id字段&#8217;,
</p>
<p>
    `attr_type` tinyint(4) NOT NULL DEFAULT &#8216;1&#8217; COMMENT &#8216;属性本身的类型  1唯一属性 2、单选属性&#8217;,
</p>
<p>
    `attr_input_type` tinyint(4) NOT NULL DEFAULT &#8216;1&#8217; COMMENT &#8216;属性的录入方式 1手工输入  2列表选择&#8217;,
</p>
<p>
    `attr_values` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;属性的默认值 多个值使用逗号隔开&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h3>2.3.2、显示属性的添加表单</h3>
<p>
  ①创建控制器方法显示模板
</p>
<p><img loading="lazy" decoding="async" width="978" height="551" src="/wp-content/uploads/2018/05/word-image-4098.png" class="wp-image-4570" srcset="/wp-content/uploads/2018/05/word-image-4098.png 978w, /wp-content/uploads/2018/05/word-image-4098-300x169.png 300w, /wp-content/uploads/2018/05/word-image-4098-768x433.png 768w" sizes="(max-width: 978px) 100vw, 978px" /></p>
<p>
  ②创建模板
</p>
<p><img loading="lazy" decoding="async" width="1091" height="683" src="/wp-content/uploads/2018/05/word-image-4099.png" class="wp-image-4571" srcset="/wp-content/uploads/2018/05/word-image-4099.png 1091w, /wp-content/uploads/2018/05/word-image-4099-300x188.png 300w, /wp-content/uploads/2018/05/word-image-4099-768x481.png 768w, /wp-content/uploads/2018/05/word-image-4099-1024x641.png 1024w" sizes="(max-width: 1091px) 100vw, 1091px" /><br />
<img loading="lazy" decoding="async" width="1067" height="633" src="/wp-content/uploads/2018/05/word-image-4100.png" class="wp-image-4572" srcset="/wp-content/uploads/2018/05/word-image-4100.png 1067w, /wp-content/uploads/2018/05/word-image-4100-300x178.png 300w, /wp-content/uploads/2018/05/word-image-4100-768x456.png 768w, /wp-content/uploads/2018/05/word-image-4100-1024x607.png 1024w" sizes="(max-width: 1067px) 100vw, 1067px" /><br />
<img loading="lazy" decoding="async" width="965" height="343" src="/wp-content/uploads/2018/05/word-image-4101.png" class="wp-image-4573" srcset="/wp-content/uploads/2018/05/word-image-4101.png 965w, /wp-content/uploads/2018/05/word-image-4101-300x107.png 300w, /wp-content/uploads/2018/05/word-image-4101-768x273.png 768w" sizes="(max-width: 965px) 100vw, 965px" /></p>
<p>
  ③修改默认值增加id属性
</p>
<p><img loading="lazy" decoding="async" width="1043" height="510" src="/wp-content/uploads/2018/05/word-image-4102.png" class="wp-image-4574" srcset="/wp-content/uploads/2018/05/word-image-4102.png 1043w, /wp-content/uploads/2018/05/word-image-4102-300x147.png 300w, /wp-content/uploads/2018/05/word-image-4102-768x376.png 768w, /wp-content/uploads/2018/05/word-image-4102-1024x501.png 1024w" sizes="(max-width: 1043px) 100vw, 1043px" /></p>
<p>
  ④使用js实现禁用与取消
</p>
<p><img loading="lazy" decoding="async" width="961" height="640" src="/wp-content/uploads/2018/05/word-image-4103.png" class="wp-image-4575" srcset="/wp-content/uploads/2018/05/word-image-4103.png 961w, /wp-content/uploads/2018/05/word-image-4103-300x200.png 300w, /wp-content/uploads/2018/05/word-image-4103-768x511.png 768w" sizes="(max-width: 961px) 100vw, 961px" /></p>
<h3>2.3.3、实现添加的入库</h3>
<p>
  ①修改add方法
</p>
<p><img loading="lazy" decoding="async" width="1044" height="658" src="/wp-content/uploads/2018/05/word-image-4104.png" class="wp-image-4576" srcset="/wp-content/uploads/2018/05/word-image-4104.png 1044w, /wp-content/uploads/2018/05/word-image-4104-300x189.png 300w, /wp-content/uploads/2018/05/word-image-4104-768x484.png 768w, /wp-content/uploads/2018/05/word-image-4104-1024x645.png 1024w" sizes="(max-width: 1044px) 100vw, 1044px" /></p>
<p>
  ②创建模型编写自动验证
</p>
<p><img loading="lazy" decoding="async" width="1033" height="616" src="/wp-content/uploads/2018/05/word-image-4105.png" class="wp-image-4577" srcset="/wp-content/uploads/2018/05/word-image-4105.png 1033w, /wp-content/uploads/2018/05/word-image-4105-300x179.png 300w, /wp-content/uploads/2018/05/word-image-4105-768x458.png 768w, /wp-content/uploads/2018/05/word-image-4105-1024x611.png 1024w" sizes="(max-width: 1033px) 100vw, 1033px" /></p>
<h2>2.4、属性列表显示功能</h2>
<p>
  ①创建方法获取数据显示模板
</p>
<p><img loading="lazy" decoding="async" width="741" height="334" src="/wp-content/uploads/2018/05/word-image-4106.png" class="wp-image-4578" srcset="/wp-content/uploads/2018/05/word-image-4106.png 741w, /wp-content/uploads/2018/05/word-image-4106-300x135.png 300w" sizes="(max-width: 741px) 100vw, 741px" /></p>
<p>
  ②创建listData方法
</p>
<p><img loading="lazy" decoding="async" width="1003" height="597" src="/wp-content/uploads/2018/05/word-image-4107.png" class="wp-image-4579" srcset="/wp-content/uploads/2018/05/word-image-4107.png 1003w, /wp-content/uploads/2018/05/word-image-4107-300x179.png 300w, /wp-content/uploads/2018/05/word-image-4107-768x457.png 768w" sizes="(max-width: 1003px) 100vw, 1003px" /></p>
<p>
  ③处理模板显示
</p>
<p><img loading="lazy" decoding="async" width="1084" height="684" src="/wp-content/uploads/2018/05/word-image-4108.png" class="wp-image-4580" srcset="/wp-content/uploads/2018/05/word-image-4108.png 1084w, /wp-content/uploads/2018/05/word-image-4108-300x189.png 300w, /wp-content/uploads/2018/05/word-image-4108-768x485.png 768w, /wp-content/uploads/2018/05/word-image-4108-1024x646.png 1024w" sizes="(max-width: 1084px) 100vw, 1084px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="1352" height="349" src="/wp-content/uploads/2018/05/word-image-4109.png" class="wp-image-4581" srcset="/wp-content/uploads/2018/05/word-image-4109.png 1352w, /wp-content/uploads/2018/05/word-image-4109-300x77.png 300w, /wp-content/uploads/2018/05/word-image-4109-768x198.png 768w, /wp-content/uploads/2018/05/word-image-4109-1024x264.png 1024w" sizes="(max-width: 1352px) 100vw, 1352px" /></p>
<h2>2.5、属性的删除</h2>
<p>
  ①修改模板中的连接地址
</p>
<p><img loading="lazy" decoding="async" width="1093" height="268" src="/wp-content/uploads/2018/05/word-image-4110.png" class="wp-image-4582" srcset="/wp-content/uploads/2018/05/word-image-4110.png 1093w, /wp-content/uploads/2018/05/word-image-4110-300x74.png 300w, /wp-content/uploads/2018/05/word-image-4110-768x188.png 768w, /wp-content/uploads/2018/05/word-image-4110-1024x251.png 1024w" sizes="(max-width: 1093px) 100vw, 1093px" /></p>
<p>
  ②创建方法实现删除
</p>
<p><img loading="lazy" decoding="async" width="899" height="706" src="/wp-content/uploads/2018/05/word-image-4111.png" class="wp-image-4583" srcset="/wp-content/uploads/2018/05/word-image-4111.png 899w, /wp-content/uploads/2018/05/word-image-4111-300x236.png 300w, /wp-content/uploads/2018/05/word-image-4111-768x603.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></p>
<p>
  ③在模型下实现删除
</p>
<p><img loading="lazy" decoding="async" width="956" height="520" src="/wp-content/uploads/2018/05/word-image-4112.png" class="wp-image-4584" srcset="/wp-content/uploads/2018/05/word-image-4112.png 956w, /wp-content/uploads/2018/05/word-image-4112-300x163.png 300w, /wp-content/uploads/2018/05/word-image-4112-768x418.png 768w" sizes="(max-width: 956px) 100vw, 956px" /></p>
<h2>2.6、属性编辑</h2>
<h3>2.6.1、显示原始数据</h3>
<p>
  ①创建方法获取原始数据
</p>
<p><img loading="lazy" decoding="async" width="1037" height="536" src="/wp-content/uploads/2018/05/word-image-4113.png" class="wp-image-4585" srcset="/wp-content/uploads/2018/05/word-image-4113.png 1037w, /wp-content/uploads/2018/05/word-image-4113-300x155.png 300w, /wp-content/uploads/2018/05/word-image-4113-768x397.png 768w, /wp-content/uploads/2018/05/word-image-4113-1024x529.png 1024w" sizes="(max-width: 1037px) 100vw, 1037px" /></p>
<p>
  ②处理模板
</p>
<p><img loading="lazy" decoding="async" width="1074" height="694" src="/wp-content/uploads/2018/05/word-image-4114.png" class="wp-image-4586" srcset="/wp-content/uploads/2018/05/word-image-4114.png 1074w, /wp-content/uploads/2018/05/word-image-4114-300x194.png 300w, /wp-content/uploads/2018/05/word-image-4114-768x496.png 768w, /wp-content/uploads/2018/05/word-image-4114-1024x662.png 1024w" sizes="(max-width: 1074px) 100vw, 1074px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="647" height="260" src="/wp-content/uploads/2018/05/word-image-4115.png" class="wp-image-4587" srcset="/wp-content/uploads/2018/05/word-image-4115.png 647w, /wp-content/uploads/2018/05/word-image-4115-300x121.png 300w" sizes="(max-width: 647px) 100vw, 647px" /></p>
<h3>2.6.2、实现入库修改</h3>
<p><img loading="lazy" decoding="async" width="1041" height="704" src="/wp-content/uploads/2018/05/word-image-4116.png" class="wp-image-4588" srcset="/wp-content/uploads/2018/05/word-image-4116.png 1041w, /wp-content/uploads/2018/05/word-image-4116-300x203.png 300w, /wp-content/uploads/2018/05/word-image-4116-768x519.png 768w, /wp-content/uploads/2018/05/word-image-4116-1024x693.png 1024w, /wp-content/uploads/2018/05/word-image-4116-220x150.png 220w" sizes="(max-width: 1041px) 100vw, 1041px" /></p>
<h1>商品的属性关联</h1>
<h2>3.1、添加商品时显示类型</h2>
<p>
  ①增加商品属性选项卡
</p>
<p><img loading="lazy" decoding="async" width="967" height="399" src="/wp-content/uploads/2018/05/word-image-4117.png" class="wp-image-4589" srcset="/wp-content/uploads/2018/05/word-image-4117.png 967w, /wp-content/uploads/2018/05/word-image-4117-300x124.png 300w, /wp-content/uploads/2018/05/word-image-4117-768x317.png 768w" sizes="(max-width: 967px) 100vw, 967px" /></p>
<p>
  ②增加商品属性选项卡对应的table
</p>
<p><img loading="lazy" decoding="async" width="1069" height="560" src="/wp-content/uploads/2018/05/word-image-4118.png" class="wp-image-4590" srcset="/wp-content/uploads/2018/05/word-image-4118.png 1069w, /wp-content/uploads/2018/05/word-image-4118-300x157.png 300w, /wp-content/uploads/2018/05/word-image-4118-768x402.png 768w, /wp-content/uploads/2018/05/word-image-4118-1024x536.png 1024w" sizes="(max-width: 1069px) 100vw, 1069px" /></p>
<p>
  ③修改商品添加获取类型
</p>
<p><img loading="lazy" decoding="async" width="1007" height="631" src="/wp-content/uploads/2018/05/word-image-4119.png" class="wp-image-4591" srcset="/wp-content/uploads/2018/05/word-image-4119.png 1007w, /wp-content/uploads/2018/05/word-image-4119-300x188.png 300w, /wp-content/uploads/2018/05/word-image-4119-768x481.png 768w" sizes="(max-width: 1007px) 100vw, 1007px" /></p>
<p>
  ④修改模板循环显示类型
</p>
<p><img loading="lazy" decoding="async" width="1116" height="697" src="/wp-content/uploads/2018/05/word-image-4120.png" class="wp-image-4592" srcset="/wp-content/uploads/2018/05/word-image-4120.png 1116w, /wp-content/uploads/2018/05/word-image-4120-300x187.png 300w, /wp-content/uploads/2018/05/word-image-4120-768x480.png 768w, /wp-content/uploads/2018/05/word-image-4120-1024x640.png 1024w" sizes="(max-width: 1116px) 100vw, 1116px" /></p>
<p>
  ⑤修改商品表结构
</p>
<p><img loading="lazy" decoding="async" width="872" height="312" src="/wp-content/uploads/2018/05/word-image-4121.png" class="wp-image-4593" srcset="/wp-content/uploads/2018/05/word-image-4121.png 872w, /wp-content/uploads/2018/05/word-image-4121-300x107.png 300w, /wp-content/uploads/2018/05/word-image-4121-768x275.png 768w" sizes="(max-width: 872px) 100vw, 872px" /></p>
<p>
  ⑥修改模型中自定义字段
</p>
<p><img loading="lazy" decoding="async" width="1053" height="384" src="/wp-content/uploads/2018/05/word-image-4122.png" class="wp-image-4594" srcset="/wp-content/uploads/2018/05/word-image-4122.png 1053w, /wp-content/uploads/2018/05/word-image-4122-300x109.png 300w, /wp-content/uploads/2018/05/word-image-4122-768x280.png 768w, /wp-content/uploads/2018/05/word-image-4122-1024x373.png 1024w" sizes="(max-width: 1053px) 100vw, 1053px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="1134" height="276" src="/wp-content/uploads/2018/05/word-image-4123.png" class="wp-image-4595" srcset="/wp-content/uploads/2018/05/word-image-4123.png 1134w, /wp-content/uploads/2018/05/word-image-4123-300x73.png 300w, /wp-content/uploads/2018/05/word-image-4123-768x187.png 768w, /wp-content/uploads/2018/05/word-image-4123-1024x249.png 1024w" sizes="(max-width: 1134px) 100vw, 1134px" /></p>
<h2>3.2、实现类型切换属性变化</h2>
<p>
  ①给select增加id属性
</p>
<p><img loading="lazy" decoding="async" width="1019" height="445" src="/wp-content/uploads/2018/05/word-image-4124.png" class="wp-image-4596" srcset="/wp-content/uploads/2018/05/word-image-4124.png 1019w, /wp-content/uploads/2018/05/word-image-4124-300x131.png 300w, /wp-content/uploads/2018/05/word-image-4124-768x335.png 768w" sizes="(max-width: 1019px) 100vw, 1019px" /></p>
<p>
  ②绑定切换事件
</p>
<p><img loading="lazy" decoding="async" width="1091" height="700" src="/wp-content/uploads/2018/05/word-image-4125.png" class="wp-image-4597" srcset="/wp-content/uploads/2018/05/word-image-4125.png 1091w, /wp-content/uploads/2018/05/word-image-4125-300x192.png 300w, /wp-content/uploads/2018/05/word-image-4125-768x493.png 768w, /wp-content/uploads/2018/05/word-image-4125-1024x657.png 1024w" sizes="(max-width: 1091px) 100vw, 1091px" /></p>
<p>
  ③创建方法
</p>
<p><img loading="lazy" decoding="async" width="1064" height="681" src="/wp-content/uploads/2018/05/word-image-4126.png" class="wp-image-4598" srcset="/wp-content/uploads/2018/05/word-image-4126.png 1064w, /wp-content/uploads/2018/05/word-image-4126-300x192.png 300w, /wp-content/uploads/2018/05/word-image-4126-768x492.png 768w, /wp-content/uploads/2018/05/word-image-4126-1024x655.png 1024w" sizes="(max-width: 1064px) 100vw, 1064px" /></p>
<p>
  ④创建视图
</p>
<p><img loading="lazy" decoding="async" width="1046" height="701" src="/wp-content/uploads/2018/05/word-image-4127.png" class="wp-image-4599" srcset="/wp-content/uploads/2018/05/word-image-4127.png 1046w, /wp-content/uploads/2018/05/word-image-4127-300x201.png 300w, /wp-content/uploads/2018/05/word-image-4127-768x515.png 768w, /wp-content/uploads/2018/05/word-image-4127-1024x686.png 1024w" sizes="(max-width: 1046px) 100vw, 1046px" /></p>
<h2>3.3、实现单选属性的增加功能</h2>
<p>
  由于单选属性是用于控制商品购买的。会提供多个值由用户进行选择。因此在数据录入时对于有单选属性的需要设置为可以提交多个内容
</p>
<p>
  ①修改模板
</p>
<p><img loading="lazy" decoding="async" width="1095" height="696" src="/wp-content/uploads/2018/05/word-image-4128.png" class="wp-image-4600" srcset="/wp-content/uploads/2018/05/word-image-4128.png 1095w, /wp-content/uploads/2018/05/word-image-4128-300x191.png 300w, /wp-content/uploads/2018/05/word-image-4128-768x488.png 768w, /wp-content/uploads/2018/05/word-image-4128-1024x651.png 1024w" sizes="(max-width: 1095px) 100vw, 1095px" /></p>
<p>
  ②编写js代码
</p>
<p><img loading="lazy" decoding="async" width="1070" height="696" src="/wp-content/uploads/2018/05/word-image-4129.png" class="wp-image-4601" srcset="/wp-content/uploads/2018/05/word-image-4129.png 1070w, /wp-content/uploads/2018/05/word-image-4129-300x195.png 300w, /wp-content/uploads/2018/05/word-image-4129-768x500.png 768w, /wp-content/uploads/2018/05/word-image-4129-1024x666.png 1024w" sizes="(max-width: 1070px) 100vw, 1070px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="889" height="294" src="/wp-content/uploads/2018/05/word-image-4130.png" class="wp-image-4602" srcset="/wp-content/uploads/2018/05/word-image-4130.png 889w, /wp-content/uploads/2018/05/word-image-4130-300x99.png 300w, /wp-content/uploads/2018/05/word-image-4130-768x254.png 768w" sizes="(max-width: 889px) 100vw, 889px" /></p>
<h2>3.4、商品添加属性值入库功能</h2>
<h3>3.4.1、创建商品属性表</h3>
<p>
  CREATE TABLE `shop_goods_attr` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `goods_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;商品ID&#8217;,
</p>
<p>
    `attr_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;属性ID 对应attribute表中的id字段&#8217;,
</p>
<p>
    `attr_value` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;属性值&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h3>3.4.2、实现可以提交属性ID及值</h3>
<p>
  考虑有多个属性值需要提交因此需要使用数组格式
</p>
<p>
  ①修改模板设置数组格式的name
</p>
<p><img loading="lazy" decoding="async" width="989" height="577" src="/wp-content/uploads/2018/05/word-image-4131.png" class="wp-image-4603" srcset="/wp-content/uploads/2018/05/word-image-4131.png 989w, /wp-content/uploads/2018/05/word-image-4131-300x175.png 300w, /wp-content/uploads/2018/05/word-image-4131-768x448.png 768w" sizes="(max-width: 989px) 100vw, 989px" /></p>
<p>
  ②修改添加的提交方法查看结果
</p>
<p><img loading="lazy" decoding="async" width="842" height="520" src="/wp-content/uploads/2018/05/word-image-4132.png" class="wp-image-4604" srcset="/wp-content/uploads/2018/05/word-image-4132.png 842w, /wp-content/uploads/2018/05/word-image-4132-300x185.png 300w, /wp-content/uploads/2018/05/word-image-4132-768x474.png 768w" sizes="(max-width: 842px) 100vw, 842px" /><br />
<img loading="lazy" decoding="async" width="549" height="273" src="/wp-content/uploads/2018/05/word-image-4133.png" class="wp-image-4605" srcset="/wp-content/uploads/2018/05/word-image-4133.png 549w, /wp-content/uploads/2018/05/word-image-4133-300x149.png 300w" sizes="(max-width: 549px) 100vw, 549px" /></p>
<p>
  ③再次修改name值格式
</p>
<p><img loading="lazy" decoding="async" width="977" height="577" src="/wp-content/uploads/2018/05/word-image-4134.png" class="wp-image-4606" srcset="/wp-content/uploads/2018/05/word-image-4134.png 977w, /wp-content/uploads/2018/05/word-image-4134-300x177.png 300w, /wp-content/uploads/2018/05/word-image-4134-768x454.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></p>
<p>
  ④再次查看结果
</p>
<p><img loading="lazy" decoding="async" width="790" height="296" src="/wp-content/uploads/2018/05/word-image-4135.png" class="wp-image-4607" srcset="/wp-content/uploads/2018/05/word-image-4135.png 790w, /wp-content/uploads/2018/05/word-image-4135-300x112.png 300w, /wp-content/uploads/2018/05/word-image-4135-768x288.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></p>
<p>
  ⑤再次修改name格式
</p>
<p><img loading="lazy" decoding="async" width="1041" height="643" src="/wp-content/uploads/2018/05/word-image-4136.png" class="wp-image-4608" srcset="/wp-content/uploads/2018/05/word-image-4136.png 1041w, /wp-content/uploads/2018/05/word-image-4136-300x185.png 300w, /wp-content/uploads/2018/05/word-image-4136-768x474.png 768w, /wp-content/uploads/2018/05/word-image-4136-1024x632.png 1024w" sizes="(max-width: 1041px) 100vw, 1041px" /></p>
<p>
  ⑥查看结果
</p>
<p><img loading="lazy" decoding="async" width="703" height="359" src="/wp-content/uploads/2018/05/word-image-4137.png" class="wp-image-4609" srcset="/wp-content/uploads/2018/05/word-image-4137.png 703w, /wp-content/uploads/2018/05/word-image-4137-300x153.png 300w" sizes="(max-width: 703px) 100vw, 703px" /></p>
<h3>3.4.3、实现入库</h3>
<p>
  ①查看添加后置钩子函数传输的结果
</p>
<p><img loading="lazy" decoding="async" width="665" height="374" src="/wp-content/uploads/2018/05/word-image-4138.png" class="wp-image-4610" srcset="/wp-content/uploads/2018/05/word-image-4138.png 665w, /wp-content/uploads/2018/05/word-image-4138-300x169.png 300w" sizes="(max-width: 665px) 100vw, 665px" /></p>
<p>
  ②添加后置钩子函数处理属性
</p>
<p><img loading="lazy" decoding="async" width="1051" height="649" src="/wp-content/uploads/2018/05/word-image-4139.png" class="wp-image-4611" srcset="/wp-content/uploads/2018/05/word-image-4139.png 1051w, /wp-content/uploads/2018/05/word-image-4139-300x185.png 300w, /wp-content/uploads/2018/05/word-image-4139-768x474.png 768w, /wp-content/uploads/2018/05/word-image-4139-1024x632.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" /></p>
<p>
  结果查看数据表即可
</p>
<p><img loading="lazy" decoding="async" width="669" height="403" src="/wp-content/uploads/2018/05/word-image-4140.png" class="wp-image-4612" srcset="/wp-content/uploads/2018/05/word-image-4140.png 669w, /wp-content/uploads/2018/05/word-image-4140-300x181.png 300w" sizes="(max-width: 669px) 100vw, 669px" /></p>
<h2>3.5、商品修改属性入库修改</h2>
<h3>3.5.1、实现显示已有的属性信息</h3>
<p>
  ①修改编辑的方法获取已有的属性信息
</p>
<p><img loading="lazy" decoding="async" width="1056" height="661" src="/wp-content/uploads/2018/05/word-image-4141.png" class="wp-image-4613" srcset="/wp-content/uploads/2018/05/word-image-4141.png 1056w, /wp-content/uploads/2018/05/word-image-4141-300x188.png 300w, /wp-content/uploads/2018/05/word-image-4141-768x481.png 768w, /wp-content/uploads/2018/05/word-image-4141-1024x641.png 1024w" sizes="(max-width: 1056px) 100vw, 1056px" /></p>
<p>
  ②查看结果
</p>
<p><img loading="lazy" decoding="async" width="857" height="615" src="/wp-content/uploads/2018/05/word-image-4142.png" class="wp-image-4614" srcset="/wp-content/uploads/2018/05/word-image-4142.png 857w, /wp-content/uploads/2018/05/word-image-4142-300x215.png 300w, /wp-content/uploads/2018/05/word-image-4142-768x551.png 768w" sizes="(max-width: 857px) 100vw, 857px" /></p>
<p>
  ③继续修改编辑方法获取已有的类型信息
</p>
<p><img loading="lazy" decoding="async" width="1049" height="473" src="/wp-content/uploads/2018/05/word-image-4143.png" class="wp-image-4615" srcset="/wp-content/uploads/2018/05/word-image-4143.png 1049w, /wp-content/uploads/2018/05/word-image-4143-300x135.png 300w, /wp-content/uploads/2018/05/word-image-4143-768x346.png 768w, /wp-content/uploads/2018/05/word-image-4143-1024x462.png 1024w" sizes="(max-width: 1049px) 100vw, 1049px" /></p>
<p>
  ④继续格式化所获取到的属性信息
</p>
<p><img loading="lazy" decoding="async" width="1068" height="627" src="/wp-content/uploads/2018/05/word-image-4144.png" class="wp-image-4616" srcset="/wp-content/uploads/2018/05/word-image-4144.png 1068w, /wp-content/uploads/2018/05/word-image-4144-300x176.png 300w, /wp-content/uploads/2018/05/word-image-4144-768x451.png 768w, /wp-content/uploads/2018/05/word-image-4144-1024x601.png 1024w" sizes="(max-width: 1068px) 100vw, 1068px" /><br />
<img loading="lazy" decoding="async" width="899" height="583" src="/wp-content/uploads/2018/05/word-image-4145.png" class="wp-image-4617" srcset="/wp-content/uploads/2018/05/word-image-4145.png 899w, /wp-content/uploads/2018/05/word-image-4145-300x195.png 300w, /wp-content/uploads/2018/05/word-image-4145-768x498.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></p>
<p>
  ④继续格式化数据
</p>
<p><img loading="lazy" decoding="async" width="1069" height="698" src="/wp-content/uploads/2018/05/word-image-4146.png" class="wp-image-4618" srcset="/wp-content/uploads/2018/05/word-image-4146.png 1069w, /wp-content/uploads/2018/05/word-image-4146-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4146-768x501.png 768w, /wp-content/uploads/2018/05/word-image-4146-1024x669.png 1024w" sizes="(max-width: 1069px) 100vw, 1069px" /></p>
<p>
  格式化效果如下
</p>
<p><img loading="lazy" decoding="async" width="1105" height="703" src="/wp-content/uploads/2018/05/word-image-4147.png" class="wp-image-4619" srcset="/wp-content/uploads/2018/05/word-image-4147.png 1105w, /wp-content/uploads/2018/05/word-image-4147-300x191.png 300w, /wp-content/uploads/2018/05/word-image-4147-768x489.png 768w, /wp-content/uploads/2018/05/word-image-4147-1024x651.png 1024w" sizes="(max-width: 1105px) 100vw, 1105px" /></p>
<p>
  ②模板显示数据
</p>
<p><img loading="lazy" decoding="async" width="1069" height="465" src="/wp-content/uploads/2018/05/word-image-4148.png" class="wp-image-4620" srcset="/wp-content/uploads/2018/05/word-image-4148.png 1069w, /wp-content/uploads/2018/05/word-image-4148-300x130.png 300w, /wp-content/uploads/2018/05/word-image-4148-768x334.png 768w, /wp-content/uploads/2018/05/word-image-4148-1024x445.png 1024w" sizes="(max-width: 1069px) 100vw, 1069px" /><br />
<img loading="lazy" decoding="async" width="1067" height="556" src="/wp-content/uploads/2018/05/word-image-4149.png" class="wp-image-4621" srcset="/wp-content/uploads/2018/05/word-image-4149.png 1067w, /wp-content/uploads/2018/05/word-image-4149-300x156.png 300w, /wp-content/uploads/2018/05/word-image-4149-768x400.png 768w, /wp-content/uploads/2018/05/word-image-4149-1024x534.png 1024w" sizes="(max-width: 1067px) 100vw, 1067px" /><br />
<img loading="lazy" decoding="async" width="1075" height="194" src="/wp-content/uploads/2018/05/word-image-4150.png" class="wp-image-4622" srcset="/wp-content/uploads/2018/05/word-image-4150.png 1075w, /wp-content/uploads/2018/05/word-image-4150-300x54.png 300w, /wp-content/uploads/2018/05/word-image-4150-768x139.png 768w, /wp-content/uploads/2018/05/word-image-4150-1024x185.png 1024w" sizes="(max-width: 1075px) 100vw, 1075px" /></p>
<p>
  最终效果如下
</p>
<p><img loading="lazy" decoding="async" width="975" height="539" src="/wp-content/uploads/2018/05/word-image-4151.png" class="wp-image-4623" srcset="/wp-content/uploads/2018/05/word-image-4151.png 975w, /wp-content/uploads/2018/05/word-image-4151-300x166.png 300w, /wp-content/uploads/2018/05/word-image-4151-768x425.png 768w" sizes="(max-width: 975px) 100vw, 975px" /></p>
<h3>3.5.2、实现属性的入库修改</h3>
<p><img loading="lazy" decoding="async" width="991" height="678" src="/wp-content/uploads/2018/05/word-image-4152.png" class="wp-image-4624" srcset="/wp-content/uploads/2018/05/word-image-4152.png 991w, /wp-content/uploads/2018/05/word-image-4152-300x205.png 300w, /wp-content/uploads/2018/05/word-image-4152-768x525.png 768w, /wp-content/uploads/2018/05/word-image-4152-220x150.png 220w" sizes="(max-width: 991px) 100vw, 991px" /></p>
<h1>总结商品属性之间的关系</h1>
<p><img loading="lazy" decoding="async" width="1141" height="624" src="/wp-content/uploads/2018/05/word-image-4153.png" class="wp-image-4625" srcset="/wp-content/uploads/2018/05/word-image-4153.png 1141w, /wp-content/uploads/2018/05/word-image-4153-300x164.png 300w, /wp-content/uploads/2018/05/word-image-4153-768x420.png 768w, /wp-content/uploads/2018/05/word-image-4153-1024x560.png 1024w" sizes="(max-width: 1141px) 100vw, 1141px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4552.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TP3.2商城 （四）RBAC、角色、用户、权限</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4470.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4470.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 12:48:53 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[RBAC]]></category>
		<category><![CDATA[权限]]></category>
		<category><![CDATA[用户]]></category>
		<category><![CDATA[角色]]></category>
		<guid isPermaLink="false">/?p=4470</guid>

					<description><![CDATA[RBAC权限认证概述 权限概述 权限也就是用户是否能够访问后台某个页面。权限即控制器中的某一个方法。对于是否有 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>RBAC权限认证概述</h1>
<h2>权限概述</h2>
<p>
  权限也就是用户是否能够访问后台某个页面。权限即控制器中的某一个方法。对于是否有权访问访问某个方法的操作经常使用的就是RBAC方式实现
</p>
<h2>RBAC方式控制权限</h2>
<p>
  RBAC基于角色的权限控制系统。一个用户属于某一种角色。而角色对应拥有哪些权限信息。因此用户就拥有了角色所对应的权限信息
</p>
<p>
  <br />
  关于权限说明：权限信息即后台中所对应的控制器及方法。此信息需要保存到数据表中。当检查用户是否具备权限时，通过使用当前用户访问的控制器跟方法名称与已经拥有的权限进行对比即可。在赋予权限过程中。如果直接给用户赋予权限操作麻烦。可以使用角色赋予权限。用户归属角色。用户自动的就拥有了权限
</p>
<p><img loading="lazy" decoding="async" width="1095" height="447" src="/wp-content/uploads/2018/05/word-image-4001.png" class="wp-image-4471" srcset="/wp-content/uploads/2018/05/word-image-4001.png 1095w, /wp-content/uploads/2018/05/word-image-4001-300x122.png 300w, /wp-content/uploads/2018/05/word-image-4001-768x314.png 768w, /wp-content/uploads/2018/05/word-image-4001-1024x418.png 1024w" sizes="(max-width: 1095px) 100vw, 1095px" /></p>
<h2>1.3、RBAC具体要实现的功能</h2>
<p>
  1、用户的管理功能(后台用户的增删改查)
</p>
<p>
  2、角色的管理功能(增删改查)
</p>
<p>
  3、权限信息的增删改查操作
</p>
<p>
  4、给用户分配角色
</p>
<p>
  5、给角色分配权限信息
</p>
<p>
  6、针对后台中每一个方法进行判断是否拥有权限(根据当前用户访问的控制器方法跟当前用户归属的角色对应的权限信息进行比较)
</p>
<p>
  7、根据权限信息生成后台首页的导航菜单
</p>
<p>
  8、预留一个超级管理员用户
</p>
<p>
  9、预留一个超级管理员角色
</p>
<h1>2、创建数据表</h1>
<h2>2.1、创建角色表</h2>
<p>
  CREATE TABLE `shop_role` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `role_name` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;角色名称&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h2>2.2、创建用户角色中间表</h2>
<p>
  CREATE TABLE `shop_admin_role` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `admin_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;后台用户id 关联admin表中的id字段&#8217;,
</p>
<p>
    `role_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;角色ID 关联角色表中的ID字段&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=&#8217;用户角色中间表&#8217;;
</p>
<h2>2.3、创建权限表</h2>
<p>
  CREATE TABLE `shop_rule` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `rule_name` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;权限名称&#8217;,
</p>
<p>
    `module_name` varchar(255) NOT NULL DEFAULT &#8216;admin&#8217; COMMENT &#8216;模块名称&#8217;,
</p>
<p>
    `controller_name` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;控制器名称&#8217;,
</p>
<p>
    `action_name` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;操作名称&#8217;,
</p>
<p>
    `parent_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;上级权限id&#8217;,
</p>
<p>
    `is_show` tinyint(4) NOT NULL DEFAULT &#8216;1&#8217; COMMENT &#8216;是否导航菜单显示 1显示 0不显示&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=&#8217;权限表&#8217;;
</p>
<h2>2.4、创建角色权限中间表</h2>
<p>
  CREATE TABLE `shop_role_rule` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `role_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;角色ID&#8217;,
</p>
<p>
    `rule_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;权限ID&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=&#8217;角色权限中间表&#8217;;
</p>
<p><img loading="lazy" decoding="async" width="1052" height="516" src="/wp-content/uploads/2018/05/word-image-4002.png" class="wp-image-4472" srcset="/wp-content/uploads/2018/05/word-image-4002.png 1052w, /wp-content/uploads/2018/05/word-image-4002-300x147.png 300w, /wp-content/uploads/2018/05/word-image-4002-768x377.png 768w, /wp-content/uploads/2018/05/word-image-4002-1024x502.png 1024w" sizes="(max-width: 1052px) 100vw, 1052px" /></p>
<h1>3、角色管理功能</h1>
<h2>3.1、实现角色的添加</h2>
<p>
  ①创建控制器增加生成模型的方法
</p>
<p><img loading="lazy" decoding="async" width="862" height="532" src="/wp-content/uploads/2018/05/word-image-4003.png" class="wp-image-4473" srcset="/wp-content/uploads/2018/05/word-image-4003.png 862w, /wp-content/uploads/2018/05/word-image-4003-300x185.png 300w, /wp-content/uploads/2018/05/word-image-4003-768x474.png 768w" sizes="(max-width: 862px) 100vw, 862px" /></p>
<p>
  ②创建方法处理角色添加
</p>
<p><img loading="lazy" decoding="async" width="1024" height="599" src="/wp-content/uploads/2018/05/word-image-4004.png" class="wp-image-4474" srcset="/wp-content/uploads/2018/05/word-image-4004.png 1024w, /wp-content/uploads/2018/05/word-image-4004-300x175.png 300w, /wp-content/uploads/2018/05/word-image-4004-768x449.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>
  ③创建自定义模型
</p>
<p><img loading="lazy" decoding="async" width="1078" height="635" src="/wp-content/uploads/2018/05/word-image-4005.png" class="wp-image-4475" srcset="/wp-content/uploads/2018/05/word-image-4005.png 1078w, /wp-content/uploads/2018/05/word-image-4005-300x177.png 300w, /wp-content/uploads/2018/05/word-image-4005-768x452.png 768w, /wp-content/uploads/2018/05/word-image-4005-1024x603.png 1024w" sizes="(max-width: 1078px) 100vw, 1078px" /></p>
<p>
  ④处理模板
</p>
<p><img loading="lazy" decoding="async" width="1081" height="697" src="/wp-content/uploads/2018/05/word-image-4006.png" class="wp-image-4476" srcset="/wp-content/uploads/2018/05/word-image-4006.png 1081w, /wp-content/uploads/2018/05/word-image-4006-300x193.png 300w, /wp-content/uploads/2018/05/word-image-4006-768x495.png 768w, /wp-content/uploads/2018/05/word-image-4006-1024x660.png 1024w" sizes="(max-width: 1081px) 100vw, 1081px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="934" height="248" src="/wp-content/uploads/2018/05/word-image-4007.png" class="wp-image-4477" srcset="/wp-content/uploads/2018/05/word-image-4007.png 934w, /wp-content/uploads/2018/05/word-image-4007-300x80.png 300w, /wp-content/uploads/2018/05/word-image-4007-768x204.png 768w" sizes="(max-width: 934px) 100vw, 934px" /><br />
<img loading="lazy" decoding="async" width="472" height="199" src="/wp-content/uploads/2018/05/word-image-4008.png" class="wp-image-4478" srcset="/wp-content/uploads/2018/05/word-image-4008.png 472w, /wp-content/uploads/2018/05/word-image-4008-300x126.png 300w" sizes="(max-width: 472px) 100vw, 472px" /></p>
<h2>3.2、列表显示</h2>
<p>
  ①创建方法
</p>
<p><img loading="lazy" decoding="async" width="883" height="396" src="/wp-content/uploads/2018/05/word-image-4009.png" class="wp-image-4479" srcset="/wp-content/uploads/2018/05/word-image-4009.png 883w, /wp-content/uploads/2018/05/word-image-4009-300x135.png 300w, /wp-content/uploads/2018/05/word-image-4009-768x344.png 768w" sizes="(max-width: 883px) 100vw, 883px" /></p>
<p>
  ②实现listData方法
</p>
<p><img loading="lazy" decoding="async" width="956" height="668" src="/wp-content/uploads/2018/05/word-image-4010.png" class="wp-image-4480" srcset="/wp-content/uploads/2018/05/word-image-4010.png 956w, /wp-content/uploads/2018/05/word-image-4010-300x210.png 300w, /wp-content/uploads/2018/05/word-image-4010-768x537.png 768w" sizes="(max-width: 956px) 100vw, 956px" /></p>
<p>
  ③处理模板
</p>
<p><img loading="lazy" decoding="async" width="1067" height="695" src="/wp-content/uploads/2018/05/word-image-4011.png" class="wp-image-4481" srcset="/wp-content/uploads/2018/05/word-image-4011.png 1067w, /wp-content/uploads/2018/05/word-image-4011-300x195.png 300w, /wp-content/uploads/2018/05/word-image-4011-768x500.png 768w, /wp-content/uploads/2018/05/word-image-4011-1024x667.png 1024w" sizes="(max-width: 1067px) 100vw, 1067px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="1247" height="327" src="/wp-content/uploads/2018/05/word-image-4012.png" class="wp-image-4482" srcset="/wp-content/uploads/2018/05/word-image-4012.png 1247w, /wp-content/uploads/2018/05/word-image-4012-300x79.png 300w, /wp-content/uploads/2018/05/word-image-4012-768x201.png 768w, /wp-content/uploads/2018/05/word-image-4012-1024x269.png 1024w" sizes="(max-width: 1247px) 100vw, 1247px" /></p>
<h2>3.3、角色删除</h2>
<p>
  ①修改角色列表中参数名称
</p>
<p><img loading="lazy" decoding="async" width="1058" height="446" src="/wp-content/uploads/2018/05/word-image-4013.png" class="wp-image-4483" srcset="/wp-content/uploads/2018/05/word-image-4013.png 1058w, /wp-content/uploads/2018/05/word-image-4013-300x126.png 300w, /wp-content/uploads/2018/05/word-image-4013-768x324.png 768w, /wp-content/uploads/2018/05/word-image-4013-1024x432.png 1024w" sizes="(max-width: 1058px) 100vw, 1058px" /></p>
<p>
  ②创建方法实现删除
</p>
<p><img loading="lazy" decoding="async" width="924" height="519" src="/wp-content/uploads/2018/05/word-image-4014.png" class="wp-image-4484" srcset="/wp-content/uploads/2018/05/word-image-4014.png 924w, /wp-content/uploads/2018/05/word-image-4014-300x169.png 300w, /wp-content/uploads/2018/05/word-image-4014-768x431.png 768w" sizes="(max-width: 924px) 100vw, 924px" /></p>
<p>
  ③修改模型增加dels方法
</p>
<p><img loading="lazy" decoding="async" width="939" height="389" src="/wp-content/uploads/2018/05/word-image-4015.png" class="wp-image-4485" srcset="/wp-content/uploads/2018/05/word-image-4015.png 939w, /wp-content/uploads/2018/05/word-image-4015-300x124.png 300w, /wp-content/uploads/2018/05/word-image-4015-768x318.png 768w" sizes="(max-width: 939px) 100vw, 939px" /></p>
<p>
  ④再次修改控制器方法对超级管理进行过滤
</p>
<p><img loading="lazy" decoding="async" width="885" height="582" src="/wp-content/uploads/2018/05/word-image-4016.png" class="wp-image-4486" srcset="/wp-content/uploads/2018/05/word-image-4016.png 885w, /wp-content/uploads/2018/05/word-image-4016-300x197.png 300w, /wp-content/uploads/2018/05/word-image-4016-768x505.png 768w" sizes="(max-width: 885px) 100vw, 885px" /></p>
<h2>3.4、编辑功能</h2>
<p>
  ①创建方法实现显示模板及数据提交
</p>
<p><img loading="lazy" decoding="async" width="1047" height="692" src="/wp-content/uploads/2018/05/word-image-4017.png" class="wp-image-4487" srcset="/wp-content/uploads/2018/05/word-image-4017.png 1047w, /wp-content/uploads/2018/05/word-image-4017-300x198.png 300w, /wp-content/uploads/2018/05/word-image-4017-768x508.png 768w, /wp-content/uploads/2018/05/word-image-4017-1024x677.png 1024w" sizes="(max-width: 1047px) 100vw, 1047px" /></p>
<p>
  ②创建模板
</p>
<p><img loading="lazy" decoding="async" width="1079" height="706" src="/wp-content/uploads/2018/05/word-image-4018.png" class="wp-image-4488" srcset="/wp-content/uploads/2018/05/word-image-4018.png 1079w, /wp-content/uploads/2018/05/word-image-4018-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4018-768x503.png 768w, /wp-content/uploads/2018/05/word-image-4018-1024x670.png 1024w" sizes="(max-width: 1079px) 100vw, 1079px" /></p>
<p>
  效果
</p>
<p><img loading="lazy" decoding="async" width="938" height="243" src="/wp-content/uploads/2018/05/word-image-4019.png" class="wp-image-4489" srcset="/wp-content/uploads/2018/05/word-image-4019.png 938w, /wp-content/uploads/2018/05/word-image-4019-300x78.png 300w, /wp-content/uploads/2018/05/word-image-4019-768x199.png 768w" sizes="(max-width: 938px) 100vw, 938px" /></p>
<h1>用户管理功能</h1>
<h2>4.1、用户添加</h2>
<h3>4.1.1、实现添加的表单</h3>
<p>
  ①创建控制器方法显示模板
</p>
<p><img loading="lazy" decoding="async" width="879" height="584" src="/wp-content/uploads/2018/05/word-image-4020.png" class="wp-image-4490" srcset="/wp-content/uploads/2018/05/word-image-4020.png 879w, /wp-content/uploads/2018/05/word-image-4020-300x199.png 300w, /wp-content/uploads/2018/05/word-image-4020-768x510.png 768w" sizes="(max-width: 879px) 100vw, 879px" /></p>
<p>
  ②创建模板
</p>
<p><img loading="lazy" decoding="async" width="1054" height="687" src="/wp-content/uploads/2018/05/word-image-4021.png" class="wp-image-4491" srcset="/wp-content/uploads/2018/05/word-image-4021.png 1054w, /wp-content/uploads/2018/05/word-image-4021-300x196.png 300w, /wp-content/uploads/2018/05/word-image-4021-768x501.png 768w, /wp-content/uploads/2018/05/word-image-4021-1024x667.png 1024w" sizes="(max-width: 1054px) 100vw, 1054px" /></p>
<p>
  效果
</p>
<p><img loading="lazy" decoding="async" width="967" height="277" src="/wp-content/uploads/2018/05/word-image-4022.png" class="wp-image-4492" srcset="/wp-content/uploads/2018/05/word-image-4022.png 967w, /wp-content/uploads/2018/05/word-image-4022-300x86.png 300w, /wp-content/uploads/2018/05/word-image-4022-768x220.png 768w" sizes="(max-width: 967px) 100vw, 967px" /></p>
<h3>4.1.2、实现数据的添加入库</h3>
<p>
  ①修改add方法处理表单提交
</p>
<p><img loading="lazy" decoding="async" width="1073" height="678" src="/wp-content/uploads/2018/05/word-image-4023.png" class="wp-image-4493" srcset="/wp-content/uploads/2018/05/word-image-4023.png 1073w, /wp-content/uploads/2018/05/word-image-4023-300x190.png 300w, /wp-content/uploads/2018/05/word-image-4023-768x485.png 768w, /wp-content/uploads/2018/05/word-image-4023-1024x647.png 1024w" sizes="(max-width: 1073px) 100vw, 1073px" /></p>
<p>
  ②创建模型下insert方法
</p>
<p><img loading="lazy" decoding="async" width="1064" height="699" src="/wp-content/uploads/2018/05/word-image-4024.png" class="wp-image-4494" srcset="/wp-content/uploads/2018/05/word-image-4024.png 1064w, /wp-content/uploads/2018/05/word-image-4024-300x197.png 300w, /wp-content/uploads/2018/05/word-image-4024-768x505.png 768w, /wp-content/uploads/2018/05/word-image-4024-1024x673.png 1024w" sizes="(max-width: 1064px) 100vw, 1064px" /><br />
<img loading="lazy" decoding="async" width="1058" height="536" src="/wp-content/uploads/2018/05/word-image-4025.png" class="wp-image-4495" srcset="/wp-content/uploads/2018/05/word-image-4025.png 1058w, /wp-content/uploads/2018/05/word-image-4025-300x152.png 300w, /wp-content/uploads/2018/05/word-image-4025-768x389.png 768w, /wp-content/uploads/2018/05/word-image-4025-1024x519.png 1024w" sizes="(max-width: 1058px) 100vw, 1058px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="695" height="300" src="/wp-content/uploads/2018/05/word-image-4026.png" class="wp-image-4496" srcset="/wp-content/uploads/2018/05/word-image-4026.png 695w, /wp-content/uploads/2018/05/word-image-4026-300x129.png 300w" sizes="(max-width: 695px) 100vw, 695px" /><br />
<img loading="lazy" decoding="async" width="892" height="271" src="/wp-content/uploads/2018/05/word-image-4027.png" class="wp-image-4497" srcset="/wp-content/uploads/2018/05/word-image-4027.png 892w, /wp-content/uploads/2018/05/word-image-4027-300x91.png 300w, /wp-content/uploads/2018/05/word-image-4027-768x233.png 768w" sizes="(max-width: 892px) 100vw, 892px" /></p>
<h2>4.2、实现用户的列表显示</h2>
<p>
  ①创建方法获取数据
</p>
<p><img loading="lazy" decoding="async" width="812" height="426" src="/wp-content/uploads/2018/05/word-image-4028.png" class="wp-image-4498" srcset="/wp-content/uploads/2018/05/word-image-4028.png 812w, /wp-content/uploads/2018/05/word-image-4028-300x157.png 300w, /wp-content/uploads/2018/05/word-image-4028-768x403.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></p>
<p>
  ②实现模型下的listData方法
</p>
<p><img loading="lazy" decoding="async" width="1059" height="703" src="/wp-content/uploads/2018/05/word-image-4029.png" class="wp-image-4499" srcset="/wp-content/uploads/2018/05/word-image-4029.png 1059w, /wp-content/uploads/2018/05/word-image-4029-300x199.png 300w, /wp-content/uploads/2018/05/word-image-4029-768x510.png 768w, /wp-content/uploads/2018/05/word-image-4029-1024x680.png 1024w" sizes="(max-width: 1059px) 100vw, 1059px" /></p>
<p>
  ③处理模板
</p>
<p><img loading="lazy" decoding="async" width="1088" height="636" src="/wp-content/uploads/2018/05/word-image-4030.png" class="wp-image-4500" srcset="/wp-content/uploads/2018/05/word-image-4030.png 1088w, /wp-content/uploads/2018/05/word-image-4030-300x175.png 300w, /wp-content/uploads/2018/05/word-image-4030-768x449.png 768w, /wp-content/uploads/2018/05/word-image-4030-1024x599.png 1024w" sizes="(max-width: 1088px) 100vw, 1088px" /></p>
<p>
  效果
</p>
<p><img loading="lazy" decoding="async" width="1360" height="260" src="/wp-content/uploads/2018/05/word-image-4031.png" class="wp-image-4501" srcset="/wp-content/uploads/2018/05/word-image-4031.png 1360w, /wp-content/uploads/2018/05/word-image-4031-300x57.png 300w, /wp-content/uploads/2018/05/word-image-4031-768x147.png 768w, /wp-content/uploads/2018/05/word-image-4031-1024x196.png 1024w" sizes="(max-width: 1360px) 100vw, 1360px" /></p>
<h2>4.3、实现用户的删除功能</h2>
<p>
  ①创建方法
</p>
<p><img loading="lazy" decoding="async" width="874" height="391" src="/wp-content/uploads/2018/05/word-image-4032.png" class="wp-image-4502" srcset="/wp-content/uploads/2018/05/word-image-4032.png 874w, /wp-content/uploads/2018/05/word-image-4032-300x134.png 300w, /wp-content/uploads/2018/05/word-image-4032-768x344.png 768w" sizes="(max-width: 874px) 100vw, 874px" /></p>
<p>
  ②实现dels方法
</p>
<p><img loading="lazy" decoding="async" width="1052" height="444" src="/wp-content/uploads/2018/05/word-image-4033.png" class="wp-image-4503" srcset="/wp-content/uploads/2018/05/word-image-4033.png 1052w, /wp-content/uploads/2018/05/word-image-4033-300x127.png 300w, /wp-content/uploads/2018/05/word-image-4033-768x324.png 768w, /wp-content/uploads/2018/05/word-image-4033-1024x432.png 1024w" sizes="(max-width: 1052px) 100vw, 1052px" /></p>
<p>
  ④限制预留的超级管理不能删除
</p>
<p><img loading="lazy" decoding="async" width="969" height="469" src="/wp-content/uploads/2018/05/word-image-4034.png" class="wp-image-4504" srcset="/wp-content/uploads/2018/05/word-image-4034.png 969w, /wp-content/uploads/2018/05/word-image-4034-300x145.png 300w, /wp-content/uploads/2018/05/word-image-4034-768x372.png 768w" sizes="(max-width: 969px) 100vw, 969px" /></p>
<h2>4.4、用户编辑功能</h2>
<h3>4.4.1、显示原始信息</h3>
<p>
  ①创建方法获取用户的信息
</p>
<p><img loading="lazy" decoding="async" width="1114" height="670" src="/wp-content/uploads/2018/05/word-image-4035.png" class="wp-image-4505" srcset="/wp-content/uploads/2018/05/word-image-4035.png 1114w, /wp-content/uploads/2018/05/word-image-4035-300x180.png 300w, /wp-content/uploads/2018/05/word-image-4035-768x462.png 768w, /wp-content/uploads/2018/05/word-image-4035-1024x616.png 1024w" sizes="(max-width: 1114px) 100vw, 1114px" /></p>
<p>
  ②模型下实现方法
</p>
<p><img loading="lazy" decoding="async" width="1050" height="477" src="/wp-content/uploads/2018/05/word-image-4036.png" class="wp-image-4506" srcset="/wp-content/uploads/2018/05/word-image-4036.png 1050w, /wp-content/uploads/2018/05/word-image-4036-300x136.png 300w, /wp-content/uploads/2018/05/word-image-4036-768x349.png 768w, /wp-content/uploads/2018/05/word-image-4036-1024x465.png 1024w" sizes="(max-width: 1050px) 100vw, 1050px" /></p>
<p>
  调用此方法获取到的数据如下
</p>
<p><img loading="lazy" decoding="async" width="676" height="226" src="/wp-content/uploads/2018/05/word-image-4037.png" class="wp-image-4507" srcset="/wp-content/uploads/2018/05/word-image-4037.png 676w, /wp-content/uploads/2018/05/word-image-4037-300x100.png 300w" sizes="(max-width: 676px) 100vw, 676px" /></p>
<p>
  ③处理模板显示
</p>
<p><img loading="lazy" decoding="async" width="1070" height="706" src="/wp-content/uploads/2018/05/word-image-4038.png" class="wp-image-4508" srcset="/wp-content/uploads/2018/05/word-image-4038.png 1070w, /wp-content/uploads/2018/05/word-image-4038-300x198.png 300w, /wp-content/uploads/2018/05/word-image-4038-768x507.png 768w, /wp-content/uploads/2018/05/word-image-4038-1024x676.png 1024w" sizes="(max-width: 1070px) 100vw, 1070px" /></p>
<p>
  最终效果如下
</p>
<p><img loading="lazy" decoding="async" width="1049" height="412" src="/wp-content/uploads/2018/05/word-image-4039.png" class="wp-image-4509" srcset="/wp-content/uploads/2018/05/word-image-4039.png 1049w, /wp-content/uploads/2018/05/word-image-4039-300x118.png 300w, /wp-content/uploads/2018/05/word-image-4039-768x302.png 768w, /wp-content/uploads/2018/05/word-image-4039-1024x402.png 1024w" sizes="(max-width: 1049px) 100vw, 1049px" /></p>
<h3>4.4.2、实现用户信息修改入库</h3>
<p>
  ①修改方法代码
</p>
<p><img loading="lazy" decoding="async" width="1083" height="597" src="/wp-content/uploads/2018/05/word-image-4040.png" class="wp-image-4510" srcset="/wp-content/uploads/2018/05/word-image-4040.png 1083w, /wp-content/uploads/2018/05/word-image-4040-300x165.png 300w, /wp-content/uploads/2018/05/word-image-4040-768x423.png 768w, /wp-content/uploads/2018/05/word-image-4040-1024x564.png 1024w" sizes="(max-width: 1083px) 100vw, 1083px" /></p>
<p>
  ②实现update方法进修改
</p>
<p><img loading="lazy" decoding="async" width="1077" height="623" src="/wp-content/uploads/2018/05/word-image-4041.png" class="wp-image-4511" srcset="/wp-content/uploads/2018/05/word-image-4041.png 1077w, /wp-content/uploads/2018/05/word-image-4041-300x174.png 300w, /wp-content/uploads/2018/05/word-image-4041-768x444.png 768w, /wp-content/uploads/2018/05/word-image-4041-1024x592.png 1024w" sizes="(max-width: 1077px) 100vw, 1077px" /><br />
<img loading="lazy" decoding="async" width="1043" height="525" src="/wp-content/uploads/2018/05/word-image-4042.png" class="wp-image-4512" srcset="/wp-content/uploads/2018/05/word-image-4042.png 1043w, /wp-content/uploads/2018/05/word-image-4042-300x151.png 300w, /wp-content/uploads/2018/05/word-image-4042-768x387.png 768w, /wp-content/uploads/2018/05/word-image-4042-1024x515.png 1024w" sizes="(max-width: 1043px) 100vw, 1043px" /></p>
<p>
  具体效果数据变化即可
</p>
<p><img loading="lazy" decoding="async" width="631" height="140" src="/wp-content/uploads/2018/05/word-image-4043.png" class="wp-image-4513" srcset="/wp-content/uploads/2018/05/word-image-4043.png 631w, /wp-content/uploads/2018/05/word-image-4043-300x67.png 300w" sizes="(max-width: 631px) 100vw, 631px" /></p>
<h1>权限管理</h1>
<h2>5.1、权限添加</h2>
<h3>5.1.1、显示添加模板</h3>
<p>
  ①复制分类的控制器修改
</p>
<p><img loading="lazy" decoding="async" width="991" height="524" src="/wp-content/uploads/2018/05/word-image-4044.png" class="wp-image-4514" srcset="/wp-content/uploads/2018/05/word-image-4044.png 991w, /wp-content/uploads/2018/05/word-image-4044-300x159.png 300w, /wp-content/uploads/2018/05/word-image-4044-768x406.png 768w" sizes="(max-width: 991px) 100vw, 991px" /></p>
<p>
  ②复制分类的模型并且修改
</p>
<p><img loading="lazy" decoding="async" width="847" height="529" src="/wp-content/uploads/2018/05/word-image-4045.png" class="wp-image-4515" srcset="/wp-content/uploads/2018/05/word-image-4045.png 847w, /wp-content/uploads/2018/05/word-image-4045-300x187.png 300w, /wp-content/uploads/2018/05/word-image-4045-768x480.png 768w" sizes="(max-width: 847px) 100vw, 847px" /></p>
<p>
  ③复制视图
</p>
<p><img loading="lazy" decoding="async" width="1045" height="461" src="/wp-content/uploads/2018/05/word-image-4046.png" class="wp-image-4516" srcset="/wp-content/uploads/2018/05/word-image-4046.png 1045w, /wp-content/uploads/2018/05/word-image-4046-300x132.png 300w, /wp-content/uploads/2018/05/word-image-4046-768x339.png 768w, /wp-content/uploads/2018/05/word-image-4046-1024x452.png 1024w" sizes="(max-width: 1045px) 100vw, 1045px" /></p>
<p>
  ④修改添加控制器显示模板
</p>
<p><img loading="lazy" decoding="async" width="1072" height="486" src="/wp-content/uploads/2018/05/word-image-4047.png" class="wp-image-4517" srcset="/wp-content/uploads/2018/05/word-image-4047.png 1072w, /wp-content/uploads/2018/05/word-image-4047-300x136.png 300w, /wp-content/uploads/2018/05/word-image-4047-768x348.png 768w, /wp-content/uploads/2018/05/word-image-4047-1024x464.png 1024w" sizes="(max-width: 1072px) 100vw, 1072px" /></p>
<p>
  ⑤修改模型
</p>
<p><img loading="lazy" decoding="async" width="1035" height="669" src="/wp-content/uploads/2018/05/word-image-4048.png" class="wp-image-4518" srcset="/wp-content/uploads/2018/05/word-image-4048.png 1035w, /wp-content/uploads/2018/05/word-image-4048-300x194.png 300w, /wp-content/uploads/2018/05/word-image-4048-768x496.png 768w, /wp-content/uploads/2018/05/word-image-4048-1024x662.png 1024w" sizes="(max-width: 1035px) 100vw, 1035px" /></p>
<p>
  ⑥修改视图模板
</p>
<p><img loading="lazy" decoding="async" width="1040" height="675" src="/wp-content/uploads/2018/05/word-image-4049.png" class="wp-image-4519" srcset="/wp-content/uploads/2018/05/word-image-4049.png 1040w, /wp-content/uploads/2018/05/word-image-4049-300x195.png 300w, /wp-content/uploads/2018/05/word-image-4049-768x498.png 768w, /wp-content/uploads/2018/05/word-image-4049-1024x665.png 1024w" sizes="(max-width: 1040px) 100vw, 1040px" /></p>
<h3>5.1.2、实现添加数据提交</h3>
<p>
  ①修改添加处理表单提交
</p>
<p><img loading="lazy" decoding="async" width="897" height="659" src="/wp-content/uploads/2018/05/word-image-4050.png" class="wp-image-4520" srcset="/wp-content/uploads/2018/05/word-image-4050.png 897w, /wp-content/uploads/2018/05/word-image-4050-300x220.png 300w, /wp-content/uploads/2018/05/word-image-4050-768x564.png 768w" sizes="(max-width: 897px) 100vw, 897px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="824" height="347" src="/wp-content/uploads/2018/05/word-image-4051.png" class="wp-image-4521" srcset="/wp-content/uploads/2018/05/word-image-4051.png 824w, /wp-content/uploads/2018/05/word-image-4051-300x126.png 300w, /wp-content/uploads/2018/05/word-image-4051-768x323.png 768w" sizes="(max-width: 824px) 100vw, 824px" /><br />
<img loading="lazy" decoding="async" width="876" height="194" src="/wp-content/uploads/2018/05/word-image-4052.png" class="wp-image-4522" srcset="/wp-content/uploads/2018/05/word-image-4052.png 876w, /wp-content/uploads/2018/05/word-image-4052-300x66.png 300w, /wp-content/uploads/2018/05/word-image-4052-768x170.png 768w" sizes="(max-width: 876px) 100vw, 876px" /></p>
<h2>5.2、权限列表显示</h2>
<p>
  ①修改index方法
</p>
<p><img loading="lazy" decoding="async" width="851" height="417" src="/wp-content/uploads/2018/05/word-image-4053.png" class="wp-image-4523" srcset="/wp-content/uploads/2018/05/word-image-4053.png 851w, /wp-content/uploads/2018/05/word-image-4053-300x147.png 300w, /wp-content/uploads/2018/05/word-image-4053-768x376.png 768w" sizes="(max-width: 851px) 100vw, 851px" /></p>
<p>
  ②修改模板
</p>
<p><img loading="lazy" decoding="async" width="1056" height="648" src="/wp-content/uploads/2018/05/word-image-4054.png" class="wp-image-4524" srcset="/wp-content/uploads/2018/05/word-image-4054.png 1056w, /wp-content/uploads/2018/05/word-image-4054-300x184.png 300w, /wp-content/uploads/2018/05/word-image-4054-768x471.png 768w, /wp-content/uploads/2018/05/word-image-4054-1024x628.png 1024w" sizes="(max-width: 1056px) 100vw, 1056px" /></p>
<h2>5.3、权限删除功能</h2>
<p>
  ①修改dels方法
</p>
<p><img loading="lazy" decoding="async" width="946" height="590" src="/wp-content/uploads/2018/05/word-image-4055.png" class="wp-image-4525" srcset="/wp-content/uploads/2018/05/word-image-4055.png 946w, /wp-content/uploads/2018/05/word-image-4055-300x187.png 300w, /wp-content/uploads/2018/05/word-image-4055-768x479.png 768w" sizes="(max-width: 946px) 100vw, 946px" /></p>
<p>
  ②修改模型下的dels方法
</p>
<p><img loading="lazy" decoding="async" width="1046" height="525" src="/wp-content/uploads/2018/05/word-image-4056.png" class="wp-image-4526" srcset="/wp-content/uploads/2018/05/word-image-4056.png 1046w, /wp-content/uploads/2018/05/word-image-4056-300x151.png 300w, /wp-content/uploads/2018/05/word-image-4056-768x385.png 768w, /wp-content/uploads/2018/05/word-image-4056-1024x514.png 1024w" sizes="(max-width: 1046px) 100vw, 1046px" /></p>
<h2>5.4、权限的编辑</h2>
<p>
  ①修改edit方法显示原始信息
</p>
<p><img loading="lazy" decoding="async" width="1026" height="578" src="/wp-content/uploads/2018/05/word-image-4057.png" class="wp-image-4527" srcset="/wp-content/uploads/2018/05/word-image-4057.png 1026w, /wp-content/uploads/2018/05/word-image-4057-300x169.png 300w, /wp-content/uploads/2018/05/word-image-4057-768x433.png 768w, /wp-content/uploads/2018/05/word-image-4057-1024x577.png 1024w" sizes="(max-width: 1026px) 100vw, 1026px" /></p>
<p>
  ②修改模板
</p>
<p><img loading="lazy" decoding="async" width="1055" height="648" src="/wp-content/uploads/2018/05/word-image-4058.png" class="wp-image-4528" srcset="/wp-content/uploads/2018/05/word-image-4058.png 1055w, /wp-content/uploads/2018/05/word-image-4058-300x184.png 300w, /wp-content/uploads/2018/05/word-image-4058-768x472.png 768w, /wp-content/uploads/2018/05/word-image-4058-1024x629.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="949" height="382" src="/wp-content/uploads/2018/05/word-image-4059.png" class="wp-image-4529" srcset="/wp-content/uploads/2018/05/word-image-4059.png 949w, /wp-content/uploads/2018/05/word-image-4059-300x121.png 300w, /wp-content/uploads/2018/05/word-image-4059-768x309.png 768w" sizes="(max-width: 949px) 100vw, 949px" /></p>
<p>
  ③修改edit方法处理表单提交
</p>
<p><img loading="lazy" decoding="async" width="999" height="660" src="/wp-content/uploads/2018/05/word-image-4060.png" class="wp-image-4530" srcset="/wp-content/uploads/2018/05/word-image-4060.png 999w, /wp-content/uploads/2018/05/word-image-4060-300x198.png 300w, /wp-content/uploads/2018/05/word-image-4060-768x507.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></p>
<p>
  ④修改模型下的update方法
</p>
<p><img loading="lazy" decoding="async" width="1033" height="688" src="/wp-content/uploads/2018/05/word-image-4061.png" class="wp-image-4531" srcset="/wp-content/uploads/2018/05/word-image-4061.png 1033w, /wp-content/uploads/2018/05/word-image-4061-300x200.png 300w, /wp-content/uploads/2018/05/word-image-4061-768x512.png 768w, /wp-content/uploads/2018/05/word-image-4061-1024x682.png 1024w" sizes="(max-width: 1033px) 100vw, 1033px" /></p>
<p>
  ⑤修改getTree方法
</p>
<p><img loading="lazy" decoding="async" width="1060" height="713" src="/wp-content/uploads/2018/05/word-image-4062.png" class="wp-image-4532" srcset="/wp-content/uploads/2018/05/word-image-4062.png 1060w, /wp-content/uploads/2018/05/word-image-4062-300x202.png 300w, /wp-content/uploads/2018/05/word-image-4062-768x517.png 768w, /wp-content/uploads/2018/05/word-image-4062-1024x689.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /></p>
<h1>为角色赋予权限</h1>
<h2>6.1、显示权限信息</h2>
<p>
  ①修改角色列表增加权限分配的入口
</p>
<p><img loading="lazy" decoding="async" width="1083" height="546" src="/wp-content/uploads/2018/05/word-image-4063.png" class="wp-image-4533" srcset="/wp-content/uploads/2018/05/word-image-4063.png 1083w, /wp-content/uploads/2018/05/word-image-4063-300x151.png 300w, /wp-content/uploads/2018/05/word-image-4063-768x387.png 768w, /wp-content/uploads/2018/05/word-image-4063-1024x516.png 1024w" sizes="(max-width: 1083px) 100vw, 1083px" /><br />
<img loading="lazy" decoding="async" width="1322" height="329" src="/wp-content/uploads/2018/05/word-image-4064.png" class="wp-image-4534" srcset="/wp-content/uploads/2018/05/word-image-4064.png 1322w, /wp-content/uploads/2018/05/word-image-4064-300x75.png 300w, /wp-content/uploads/2018/05/word-image-4064-768x191.png 768w, /wp-content/uploads/2018/05/word-image-4064-1024x255.png 1024w" sizes="(max-width: 1322px) 100vw, 1322px" /></p>
<p>
  ②创建方法获取所有的权限信息
</p>
<p><img loading="lazy" decoding="async" width="983" height="649" src="/wp-content/uploads/2018/05/word-image-4065.png" class="wp-image-4535" srcset="/wp-content/uploads/2018/05/word-image-4065.png 983w, /wp-content/uploads/2018/05/word-image-4065-300x198.png 300w, /wp-content/uploads/2018/05/word-image-4065-768x507.png 768w" sizes="(max-width: 983px) 100vw, 983px" /></p>
<p>
  ③拷贝模板
</p>
<p><img loading="lazy" decoding="async" width="1188" height="452" src="/wp-content/uploads/2018/05/word-image-4066.png" class="wp-image-4536" srcset="/wp-content/uploads/2018/05/word-image-4066.png 1188w, /wp-content/uploads/2018/05/word-image-4066-300x114.png 300w, /wp-content/uploads/2018/05/word-image-4066-768x292.png 768w, /wp-content/uploads/2018/05/word-image-4066-1024x390.png 1024w" sizes="(max-width: 1188px) 100vw, 1188px" /></p>
<p>
  ④修改模板显示数据
</p>
<p><img loading="lazy" decoding="async" width="1068" height="676" src="/wp-content/uploads/2018/05/word-image-4067.png" class="wp-image-4537" srcset="/wp-content/uploads/2018/05/word-image-4067.png 1068w, /wp-content/uploads/2018/05/word-image-4067-300x190.png 300w, /wp-content/uploads/2018/05/word-image-4067-768x486.png 768w, /wp-content/uploads/2018/05/word-image-4067-1024x648.png 1024w" sizes="(max-width: 1068px) 100vw, 1068px" /><br />
<img loading="lazy" decoding="async" width="1060" height="578" src="/wp-content/uploads/2018/05/word-image-4068.png" class="wp-image-4538" srcset="/wp-content/uploads/2018/05/word-image-4068.png 1060w, /wp-content/uploads/2018/05/word-image-4068-300x164.png 300w, /wp-content/uploads/2018/05/word-image-4068-768x419.png 768w, /wp-content/uploads/2018/05/word-image-4068-1024x558.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /><br />
<img loading="lazy" decoding="async" width="1060" height="418" src="/wp-content/uploads/2018/05/word-image-4069.png" class="wp-image-4539" srcset="/wp-content/uploads/2018/05/word-image-4069.png 1060w, /wp-content/uploads/2018/05/word-image-4069-300x118.png 300w, /wp-content/uploads/2018/05/word-image-4069-768x303.png 768w, /wp-content/uploads/2018/05/word-image-4069-1024x404.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="1000" height="271" src="/wp-content/uploads/2018/05/word-image-4070.png" class="wp-image-4540" srcset="/wp-content/uploads/2018/05/word-image-4070.png 1000w, /wp-content/uploads/2018/05/word-image-4070-300x81.png 300w, /wp-content/uploads/2018/05/word-image-4070-768x208.png 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></p>
<h2>6.2、实现权限信息的入库</h2>
<p>
  ①修改控制器方法处理表单提交
</p>
<p><img loading="lazy" decoding="async" width="985" height="657" src="/wp-content/uploads/2018/05/word-image-4071.png" class="wp-image-4541" srcset="/wp-content/uploads/2018/05/word-image-4071.png 985w, /wp-content/uploads/2018/05/word-image-4071-300x200.png 300w, /wp-content/uploads/2018/05/word-image-4071-768x512.png 768w" sizes="(max-width: 985px) 100vw, 985px" /></p>
<p>
  ②创建模型方法
</p>
<p><img loading="lazy" decoding="async" width="1034" height="684" src="/wp-content/uploads/2018/05/word-image-4072.png" class="wp-image-4542" srcset="/wp-content/uploads/2018/05/word-image-4072.png 1034w, /wp-content/uploads/2018/05/word-image-4072-300x198.png 300w, /wp-content/uploads/2018/05/word-image-4072-768x508.png 768w, /wp-content/uploads/2018/05/word-image-4072-1024x677.png 1024w" sizes="(max-width: 1034px) 100vw, 1034px" /></p>
<p>
  最终效果
</p>
<p><img loading="lazy" decoding="async" width="435" height="203" src="/wp-content/uploads/2018/05/word-image-4073.png" class="wp-image-4543" srcset="/wp-content/uploads/2018/05/word-image-4073.png 435w, /wp-content/uploads/2018/05/word-image-4073-300x140.png 300w" sizes="(max-width: 435px) 100vw, 435px" /></p>
<h2>6.3、实现显示权限时勾选状态</h2>
<p>
  当进行分配权限时，显示所有权限信息，如果当前角色已经拥有此权限应该处于勾选状态
</p>
<p>
  ①修改分配权限显示
</p>
<p><img loading="lazy" decoding="async" width="1069" height="535" src="/wp-content/uploads/2018/05/word-image-4074.png" class="wp-image-4544" srcset="/wp-content/uploads/2018/05/word-image-4074.png 1069w, /wp-content/uploads/2018/05/word-image-4074-300x150.png 300w, /wp-content/uploads/2018/05/word-image-4074-768x384.png 768w, /wp-content/uploads/2018/05/word-image-4074-1024x512.png 1024w" sizes="(max-width: 1069px) 100vw, 1069px" /></p>
<p>
  ②增加模型方法
</p>
<p><img loading="lazy" decoding="async" width="999" height="321" src="/wp-content/uploads/2018/05/word-image-4075.png" class="wp-image-4545" srcset="/wp-content/uploads/2018/05/word-image-4075.png 999w, /wp-content/uploads/2018/05/word-image-4075-300x96.png 300w, /wp-content/uploads/2018/05/word-image-4075-768x247.png 768w" sizes="(max-width: 999px) 100vw, 999px" /></p>
<p>
  得到的结果
</p>
<p><img loading="lazy" decoding="async" width="862" height="308" src="/wp-content/uploads/2018/05/word-image-4076.png" class="wp-image-4546" srcset="/wp-content/uploads/2018/05/word-image-4076.png 862w, /wp-content/uploads/2018/05/word-image-4076-300x107.png 300w, /wp-content/uploads/2018/05/word-image-4076-768x274.png 768w" sizes="(max-width: 862px) 100vw, 862px" /></p>
<p>
  ③再次修改模板对数据进行格式化
</p>
<p><img loading="lazy" decoding="async" width="1100" height="611" src="/wp-content/uploads/2018/05/word-image-4077.png" class="wp-image-4547" srcset="/wp-content/uploads/2018/05/word-image-4077.png 1100w, /wp-content/uploads/2018/05/word-image-4077-300x167.png 300w, /wp-content/uploads/2018/05/word-image-4077-768x427.png 768w, /wp-content/uploads/2018/05/word-image-4077-1024x569.png 1024w" sizes="(max-width: 1100px) 100vw, 1100px" /><br />
<img loading="lazy" decoding="async" width="694" height="211" src="/wp-content/uploads/2018/05/word-image-4078.png" class="wp-image-4548" srcset="/wp-content/uploads/2018/05/word-image-4078.png 694w, /wp-content/uploads/2018/05/word-image-4078-300x91.png 300w" sizes="(max-width: 694px) 100vw, 694px" /></p>
<p>
  ④修改模板
</p>
<p><img loading="lazy" decoding="async" width="1092" height="680" src="/wp-content/uploads/2018/05/word-image-4079.png" class="wp-image-4549" srcset="/wp-content/uploads/2018/05/word-image-4079.png 1092w, /wp-content/uploads/2018/05/word-image-4079-300x187.png 300w, /wp-content/uploads/2018/05/word-image-4079-768x478.png 768w, /wp-content/uploads/2018/05/word-image-4079-1024x638.png 1024w" sizes="(max-width: 1092px) 100vw, 1092px" /><br />
<img loading="lazy" decoding="async" width="928" height="279" src="/wp-content/uploads/2018/05/word-image-4080.png" class="wp-image-4550" srcset="/wp-content/uploads/2018/05/word-image-4080.png 928w, /wp-content/uploads/2018/05/word-image-4080-300x90.png 300w, /wp-content/uploads/2018/05/word-image-4080-768x231.png 768w" sizes="(max-width: 928px) 100vw, 928px" /></p>
<h1>分析权限认证的实现</h1>
<ol>
<li>
  当用户登录完成之后可以获取到用户信息
</li>
<li>
  根据用户ID获取对应的角色ID
</li>
<li>
  当角色ID为1表示为超级管理员角色 设置不进行任何权限认证，也需要获取所有的权限信息(由于导航菜单的显示)。当角色ID为其他时。先根据角色ID到角色权限中间表中找到角色对应的权限ID,在根据权限ID获取到详细权限信息
</li>
<li>
  根据当前用户请求的模块名、控制器名、方法名称与第3步获取到的权限结果集进行比较。为了比较方便 在第3步对获取到的权限信息格式化成为一个一维数组。然后在进行判断 是否在数组即可
</li>
<li>
  实现显示导航菜单。根据已有的权限信息将is_show为1的放入到一个数组中。模板中显示即可
</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4470.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TP3.2商城 （五）权限认证、商品相册、商品分类、首页推荐</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4389.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4389.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 12:42:17 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[商品分类]]></category>
		<category><![CDATA[商品相册]]></category>
		<category><![CDATA[权限认证]]></category>
		<category><![CDATA[首页推荐]]></category>
		<guid isPermaLink="false">/?p=4389</guid>

					<description><![CDATA[权限认证 实现权限认证 ①修改公共控制器调用方法进行校验 ②增加属性保存信息 ③根据用户ID获取角色ID ④根 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>权限认证</h1>
<h2>实现权限认证</h2>
<p>
  ①修改公共控制器调用方法进行校验
</p>
<p><img loading="lazy" decoding="async" width="1013" height="694" src="/wp-content/uploads/2018/05/word-image-3923.png" class="wp-image-4390" srcset="/wp-content/uploads/2018/05/word-image-3923.png 1013w, /wp-content/uploads/2018/05/word-image-3923-300x206.png 300w, /wp-content/uploads/2018/05/word-image-3923-768x526.png 768w, /wp-content/uploads/2018/05/word-image-3923-220x150.png 220w" sizes="(max-width: 1013px) 100vw, 1013px" /></p>
<p>
  ②增加属性保存信息
</p>
<p><img loading="lazy" decoding="async" width="1002" height="489" src="/wp-content/uploads/2018/05/word-image-3924.png" class="wp-image-4391" srcset="/wp-content/uploads/2018/05/word-image-3924.png 1002w, /wp-content/uploads/2018/05/word-image-3924-300x146.png 300w, /wp-content/uploads/2018/05/word-image-3924-768x375.png 768w" sizes="(max-width: 1002px) 100vw, 1002px" /></p>
<p>
  ③根据用户ID获取角色ID
</p>
<p><img loading="lazy" decoding="async" width="1073" height="515" src="/wp-content/uploads/2018/05/word-image-3925.png" class="wp-image-4392" srcset="/wp-content/uploads/2018/05/word-image-3925.png 1073w, /wp-content/uploads/2018/05/word-image-3925-300x144.png 300w, /wp-content/uploads/2018/05/word-image-3925-768x369.png 768w, /wp-content/uploads/2018/05/word-image-3925-1024x491.png 1024w" sizes="(max-width: 1073px) 100vw, 1073px" /></p>
<p>
  ④根据不同的角色获取权限信息
</p>
<p><img loading="lazy" decoding="async" width="1066" height="674" src="/wp-content/uploads/2018/05/word-image-3926.png" class="wp-image-4393" srcset="/wp-content/uploads/2018/05/word-image-3926.png 1066w, /wp-content/uploads/2018/05/word-image-3926-300x190.png 300w, /wp-content/uploads/2018/05/word-image-3926-768x486.png 768w, /wp-content/uploads/2018/05/word-image-3926-1024x647.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /></p>
<p>
  对于非超级管理员角色的权限信息如下
</p>
<p><img loading="lazy" decoding="async" width="795" height="488" src="/wp-content/uploads/2018/05/word-image-3927.png" class="wp-image-4394" srcset="/wp-content/uploads/2018/05/word-image-3927.png 795w, /wp-content/uploads/2018/05/word-image-3927-300x184.png 300w, /wp-content/uploads/2018/05/word-image-3927-768x471.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></p>
<p>
  ⑤对权限信息进行格式化
</p>
<p><img loading="lazy" decoding="async" width="1094" height="658" src="/wp-content/uploads/2018/05/word-image-3928.png" class="wp-image-4395" srcset="/wp-content/uploads/2018/05/word-image-3928.png 1094w, /wp-content/uploads/2018/05/word-image-3928-300x180.png 300w, /wp-content/uploads/2018/05/word-image-3928-768x462.png 768w, /wp-content/uploads/2018/05/word-image-3928-1024x616.png 1024w" sizes="(max-width: 1094px) 100vw, 1094px" /></p>
<p>
  超级管理数据
</p>
<p><img loading="lazy" decoding="async" width="820" height="642" src="/wp-content/uploads/2018/05/word-image-3929.png" class="wp-image-4396" srcset="/wp-content/uploads/2018/05/word-image-3929.png 820w, /wp-content/uploads/2018/05/word-image-3929-300x235.png 300w, /wp-content/uploads/2018/05/word-image-3929-768x601.png 768w" sizes="(max-width: 820px) 100vw, 820px" /></p>
<p>
  非超级管理员
</p>
<p><img loading="lazy" decoding="async" width="921" height="537" src="/wp-content/uploads/2018/05/word-image-3930.png" class="wp-image-4397" srcset="/wp-content/uploads/2018/05/word-image-3930.png 921w, /wp-content/uploads/2018/05/word-image-3930-300x175.png 300w, /wp-content/uploads/2018/05/word-image-3930-768x448.png 768w" sizes="(max-width: 921px) 100vw, 921px" /></p>
<p>
  ⑥根据当前访问的进行判断
</p>
<p><img loading="lazy" decoding="async" width="1104" height="716" src="/wp-content/uploads/2018/05/word-image-3931.png" class="wp-image-4398" srcset="/wp-content/uploads/2018/05/word-image-3931.png 1104w, /wp-content/uploads/2018/05/word-image-3931-300x195.png 300w, /wp-content/uploads/2018/05/word-image-3931-768x498.png 768w, /wp-content/uploads/2018/05/word-image-3931-1024x664.png 1024w" sizes="(max-width: 1104px) 100vw, 1104px" /></p>
<h2>处理后台首页没有权限</h2>
<p><img loading="lazy" decoding="async" width="1023" height="685" src="/wp-content/uploads/2018/05/word-image-3932.png" class="wp-image-4399" srcset="/wp-content/uploads/2018/05/word-image-3932.png 1023w, /wp-content/uploads/2018/05/word-image-3932-300x201.png 300w, /wp-content/uploads/2018/05/word-image-3932-768x514.png 768w" sizes="(max-width: 1023px) 100vw, 1023px" /></p>
<h2>处理后台首页中的导航菜单</h2>
<p>
  ①修改后台首页控制器增加方法
</p>
<p><img loading="lazy" decoding="async" width="955" height="629" src="/wp-content/uploads/2018/05/word-image-3933.png" class="wp-image-4400" srcset="/wp-content/uploads/2018/05/word-image-3933.png 955w, /wp-content/uploads/2018/05/word-image-3933-300x198.png 300w, /wp-content/uploads/2018/05/word-image-3933-768x506.png 768w" sizes="(max-width: 955px) 100vw, 955px" /></p>
<p>
  ②模板显示
</p>
<p><img loading="lazy" decoding="async" width="1071" height="702" src="/wp-content/uploads/2018/05/word-image-3934.png" class="wp-image-4401" srcset="/wp-content/uploads/2018/05/word-image-3934.png 1071w, /wp-content/uploads/2018/05/word-image-3934-300x197.png 300w, /wp-content/uploads/2018/05/word-image-3934-768x503.png 768w, /wp-content/uploads/2018/05/word-image-3934-1024x671.png 1024w" sizes="(max-width: 1071px) 100vw, 1071px" /></p>
<p>
  非超级管理员
</p>
<p><img loading="lazy" decoding="async" width="729" height="359" src="/wp-content/uploads/2018/05/word-image-3935.png" class="wp-image-4402" srcset="/wp-content/uploads/2018/05/word-image-3935.png 729w, /wp-content/uploads/2018/05/word-image-3935-300x148.png 300w" sizes="(max-width: 729px) 100vw, 729px" /></p>
<p>
  超级管理员
</p>
<p><img loading="lazy" decoding="async" width="891" height="366" src="/wp-content/uploads/2018/05/word-image-3936.png" class="wp-image-4403" srcset="/wp-content/uploads/2018/05/word-image-3936.png 891w, /wp-content/uploads/2018/05/word-image-3936-300x123.png 300w, /wp-content/uploads/2018/05/word-image-3936-768x315.png 768w" sizes="(max-width: 891px) 100vw, 891px" /></p>
<h2>权限认证性能调优</h2>
<p>
  由于权限认证处理是在公共控制器中的构造方法中实现。对于每一次访问方法都需要走权限认证。而权限认证涉及多次的数据库的查询操作。因此影响数据库性能。可以使用缓存解决问题
</p>
<p>
  ①修改代码
</p>
<p><img loading="lazy" decoding="async" width="1081" height="688" src="/wp-content/uploads/2018/05/word-image-3937.png" class="wp-image-4404" srcset="/wp-content/uploads/2018/05/word-image-3937.png 1081w, /wp-content/uploads/2018/05/word-image-3937-300x191.png 300w, /wp-content/uploads/2018/05/word-image-3937-768x489.png 768w, /wp-content/uploads/2018/05/word-image-3937-1024x652.png 1024w" sizes="(max-width: 1081px) 100vw, 1081px" /><br />
<img loading="lazy" decoding="async" width="1046" height="587" src="/wp-content/uploads/2018/05/word-image-3938.png" class="wp-image-4405" srcset="/wp-content/uploads/2018/05/word-image-3938.png 1046w, /wp-content/uploads/2018/05/word-image-3938-300x168.png 300w, /wp-content/uploads/2018/05/word-image-3938-768x431.png 768w, /wp-content/uploads/2018/05/word-image-3938-1024x575.png 1024w" sizes="(max-width: 1046px) 100vw, 1046px" /></p>
<p>
  ②处理超级管理员的权限
</p>
<p>
  当超级管理员访问某一个方法 而方法在权限中没有对应的数据
</p>
<p><img loading="lazy" decoding="async" width="834" height="361" src="/wp-content/uploads/2018/05/word-image-3939.png" class="wp-image-4406" srcset="/wp-content/uploads/2018/05/word-image-3939.png 834w, /wp-content/uploads/2018/05/word-image-3939-300x130.png 300w, /wp-content/uploads/2018/05/word-image-3939-768x332.png 768w" sizes="(max-width: 834px) 100vw, 834px" /><br />
<img loading="lazy" decoding="async" width="986" height="412" src="/wp-content/uploads/2018/05/word-image-3940.png" class="wp-image-4407" srcset="/wp-content/uploads/2018/05/word-image-3940.png 986w, /wp-content/uploads/2018/05/word-image-3940-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3940-768x321.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></p>
<p>
  使用缓存需要注意：一旦权限信息或者用户信息发送变更需要更新缓存
</p>
<h1>商品相册</h1>
<h2>添加商品相册</h2>
<h3>创建相册数据表</h3>
<p>
  CREATE TABLE `shop_goods_img` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `goods_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;商品ID&#8217;,
</p>
<p>
    `goods_img` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;相册原图&#8217;,
</p>
<p>
    `goods_thumb` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;相册小图&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h3>商品添加显示相册</h3>
<p>
  ①增加相册选项卡
</p>
<p><img loading="lazy" decoding="async" width="1002" height="308" src="/wp-content/uploads/2018/05/word-image-3941.png" class="wp-image-4408" srcset="/wp-content/uploads/2018/05/word-image-3941.png 1002w, /wp-content/uploads/2018/05/word-image-3941-300x92.png 300w, /wp-content/uploads/2018/05/word-image-3941-768x236.png 768w" sizes="(max-width: 1002px) 100vw, 1002px" /></p>
<p>
  ②增加选项卡标签对应的table
</p>
<p><img loading="lazy" decoding="async" width="1065" height="648" src="/wp-content/uploads/2018/05/word-image-3942.png" class="wp-image-4409" srcset="/wp-content/uploads/2018/05/word-image-3942.png 1065w, /wp-content/uploads/2018/05/word-image-3942-300x183.png 300w, /wp-content/uploads/2018/05/word-image-3942-768x467.png 768w, /wp-content/uploads/2018/05/word-image-3942-1024x623.png 1024w" sizes="(max-width: 1065px) 100vw, 1065px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="1051" height="289" src="/wp-content/uploads/2018/05/word-image-3943.png" class="wp-image-4410" srcset="/wp-content/uploads/2018/05/word-image-3943.png 1051w, /wp-content/uploads/2018/05/word-image-3943-300x82.png 300w, /wp-content/uploads/2018/05/word-image-3943-768x211.png 768w, /wp-content/uploads/2018/05/word-image-3943-1024x282.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" /></p>
<p>
  ③实现点击按钮增肌上传框
</p>
<p><img loading="lazy" decoding="async" width="1028" height="480" src="/wp-content/uploads/2018/05/word-image-3944.png" class="wp-image-4411" srcset="/wp-content/uploads/2018/05/word-image-3944.png 1028w, /wp-content/uploads/2018/05/word-image-3944-300x140.png 300w, /wp-content/uploads/2018/05/word-image-3944-768x359.png 768w, /wp-content/uploads/2018/05/word-image-3944-1024x478.png 1024w" sizes="(max-width: 1028px) 100vw, 1028px" /></p>
<h3>实现相册入库</h3>
<p><img loading="lazy" decoding="async" width="1039" height="696" src="/wp-content/uploads/2018/05/word-image-3945.png" class="wp-image-4412" srcset="/wp-content/uploads/2018/05/word-image-3945.png 1039w, /wp-content/uploads/2018/05/word-image-3945-300x201.png 300w, /wp-content/uploads/2018/05/word-image-3945-768x514.png 768w, /wp-content/uploads/2018/05/word-image-3945-1024x686.png 1024w" sizes="(max-width: 1039px) 100vw, 1039px" /></p>
<p>
  测试相册入库直接写入商品信息
</p>
<p><img loading="lazy" decoding="async" width="933" height="362" src="/wp-content/uploads/2018/05/word-image-3946.png" class="wp-image-4413" srcset="/wp-content/uploads/2018/05/word-image-3946.png 933w, /wp-content/uploads/2018/05/word-image-3946-300x116.png 300w, /wp-content/uploads/2018/05/word-image-3946-768x298.png 768w" sizes="(max-width: 933px) 100vw, 933px" /></p>
<h2>相册编辑</h2>
<h3>显示编辑商品的相册</h3>
<p>
  ①修改方法
</p>
<p><img loading="lazy" decoding="async" width="1063" height="648" src="/wp-content/uploads/2018/05/word-image-3947.png" class="wp-image-4414" srcset="/wp-content/uploads/2018/05/word-image-3947.png 1063w, /wp-content/uploads/2018/05/word-image-3947-300x183.png 300w, /wp-content/uploads/2018/05/word-image-3947-768x468.png 768w, /wp-content/uploads/2018/05/word-image-3947-1024x624.png 1024w" sizes="(max-width: 1063px) 100vw, 1063px" /></p>
<p>
  ②显示edit模板增加相册选项卡
</p>
<p>
  增加选项卡
</p>
<p><img loading="lazy" decoding="async" width="1080" height="400" src="/wp-content/uploads/2018/05/word-image-3948.png" class="wp-image-4415" srcset="/wp-content/uploads/2018/05/word-image-3948.png 1080w, /wp-content/uploads/2018/05/word-image-3948-300x111.png 300w, /wp-content/uploads/2018/05/word-image-3948-768x284.png 768w, /wp-content/uploads/2018/05/word-image-3948-1024x379.png 1024w" sizes="(max-width: 1080px) 100vw, 1080px" /><br />
<img loading="lazy" decoding="async" width="1044" height="699" src="/wp-content/uploads/2018/05/word-image-3949.png" class="wp-image-4416" srcset="/wp-content/uploads/2018/05/word-image-3949.png 1044w, /wp-content/uploads/2018/05/word-image-3949-300x201.png 300w, /wp-content/uploads/2018/05/word-image-3949-768x514.png 768w, /wp-content/uploads/2018/05/word-image-3949-1024x686.png 1024w" sizes="(max-width: 1044px) 100vw, 1044px" /></p>
<p>
  拷贝js
</p>
<p><img loading="lazy" decoding="async" width="1038" height="507" src="/wp-content/uploads/2018/05/word-image-3950.png" class="wp-image-4417" srcset="/wp-content/uploads/2018/05/word-image-3950.png 1038w, /wp-content/uploads/2018/05/word-image-3950-300x147.png 300w, /wp-content/uploads/2018/05/word-image-3950-768x375.png 768w, /wp-content/uploads/2018/05/word-image-3950-1024x500.png 1024w" sizes="(max-width: 1038px) 100vw, 1038px" /></p>
<p>
  最终效果如下
</p>
<p><img loading="lazy" decoding="async" width="1041" height="583" src="/wp-content/uploads/2018/05/word-image-3951.png" class="wp-image-4418" srcset="/wp-content/uploads/2018/05/word-image-3951.png 1041w, /wp-content/uploads/2018/05/word-image-3951-300x168.png 300w, /wp-content/uploads/2018/05/word-image-3951-768x430.png 768w, /wp-content/uploads/2018/05/word-image-3951-1024x573.png 1024w" sizes="(max-width: 1041px) 100vw, 1041px" /></p>
<h3>实现编辑商品追加相册</h3>
<p><img loading="lazy" decoding="async" width="1049" height="701" src="/wp-content/uploads/2018/05/word-image-3952.png" class="wp-image-4419" srcset="/wp-content/uploads/2018/05/word-image-3952.png 1049w, /wp-content/uploads/2018/05/word-image-3952-300x200.png 300w, /wp-content/uploads/2018/05/word-image-3952-768x513.png 768w, /wp-content/uploads/2018/05/word-image-3952-1024x684.png 1024w" sizes="(max-width: 1049px) 100vw, 1049px" /><br />
<img loading="lazy" decoding="async" width="960" height="376" src="/wp-content/uploads/2018/05/word-image-3953.png" class="wp-image-4420" srcset="/wp-content/uploads/2018/05/word-image-3953.png 960w, /wp-content/uploads/2018/05/word-image-3953-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3953-768x301.png 768w" sizes="(max-width: 960px) 100vw, 960px" /></p>
<h3>实现编辑商品相册图片删除</h3>
<p>
  ①修改图片属性
</p>
<p><img loading="lazy" decoding="async" width="1037" height="559" src="/wp-content/uploads/2018/05/word-image-3954.png" class="wp-image-4421" srcset="/wp-content/uploads/2018/05/word-image-3954.png 1037w, /wp-content/uploads/2018/05/word-image-3954-300x162.png 300w, /wp-content/uploads/2018/05/word-image-3954-768x414.png 768w, /wp-content/uploads/2018/05/word-image-3954-1024x552.png 1024w" sizes="(max-width: 1037px) 100vw, 1037px" /></p>
<p>
  ②绑定图片的点击事件触发ajax
</p>
<p><img loading="lazy" decoding="async" width="1056" height="670" src="/wp-content/uploads/2018/05/word-image-3955.png" class="wp-image-4422" srcset="/wp-content/uploads/2018/05/word-image-3955.png 1056w, /wp-content/uploads/2018/05/word-image-3955-300x190.png 300w, /wp-content/uploads/2018/05/word-image-3955-768x487.png 768w, /wp-content/uploads/2018/05/word-image-3955-1024x650.png 1024w" sizes="(max-width: 1056px) 100vw, 1056px" /></p>
<p>
  ③创建方法处理删除图片请求
</p>
<p><img loading="lazy" decoding="async" width="977" height="345" src="/wp-content/uploads/2018/05/word-image-3956.png" class="wp-image-4423" srcset="/wp-content/uploads/2018/05/word-image-3956.png 977w, /wp-content/uploads/2018/05/word-image-3956-300x106.png 300w, /wp-content/uploads/2018/05/word-image-3956-768x271.png 768w" sizes="(max-width: 977px) 100vw, 977px" /></p>
<p>
  ④ajax成功处理dom元素移除
</p>
<p><img loading="lazy" decoding="async" width="1028" height="655" src="/wp-content/uploads/2018/05/word-image-3957.png" class="wp-image-4425" srcset="/wp-content/uploads/2018/05/word-image-3957.png 1028w, /wp-content/uploads/2018/05/word-image-3957-300x191.png 300w, /wp-content/uploads/2018/05/word-image-3957-768x489.png 768w, /wp-content/uploads/2018/05/word-image-3957-1024x652.png 1024w" sizes="(max-width: 1028px) 100vw, 1028px" /></p>
<h1>前台页面显示</h1>
<h2>首页显示</h2>
<p>
  ①修改前台index控制器中的index方法
</p>
<p><img loading="lazy" decoding="async" width="918" height="360" src="/wp-content/uploads/2018/05/word-image-3958.png" class="wp-image-4426" srcset="/wp-content/uploads/2018/05/word-image-3958.png 918w, /wp-content/uploads/2018/05/word-image-3958-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3958-768x301.png 768w" sizes="(max-width: 918px) 100vw, 918px" /></p>
<p>
  ②拷贝前台模板文件
</p>
<p><img loading="lazy" decoding="async" width="1152" height="542" src="/wp-content/uploads/2018/05/word-image-3959.png" class="wp-image-4427" srcset="/wp-content/uploads/2018/05/word-image-3959.png 1152w, /wp-content/uploads/2018/05/word-image-3959-300x141.png 300w, /wp-content/uploads/2018/05/word-image-3959-768x361.png 768w, /wp-content/uploads/2018/05/word-image-3959-1024x482.png 1024w" sizes="(max-width: 1152px) 100vw, 1152px" /></p>
<p>
  ③拷贝资源文件
</p>
<p><img loading="lazy" decoding="async" width="1146" height="495" src="/wp-content/uploads/2018/05/word-image-3960.png" class="wp-image-4428" srcset="/wp-content/uploads/2018/05/word-image-3960.png 1146w, /wp-content/uploads/2018/05/word-image-3960-300x130.png 300w, /wp-content/uploads/2018/05/word-image-3960-768x332.png 768w, /wp-content/uploads/2018/05/word-image-3960-1024x442.png 1024w" sizes="(max-width: 1146px) 100vw, 1146px" /></p>
<p>
  ④替换资源地址
</p>
<p><img loading="lazy" decoding="async" width="1102" height="671" src="/wp-content/uploads/2018/05/word-image-3961.png" class="wp-image-4429" srcset="/wp-content/uploads/2018/05/word-image-3961.png 1102w, /wp-content/uploads/2018/05/word-image-3961-300x183.png 300w, /wp-content/uploads/2018/05/word-image-3961-768x468.png 768w, /wp-content/uploads/2018/05/word-image-3961-1024x624.png 1024w" sizes="(max-width: 1102px) 100vw, 1102px" /></p>
<h2>使用版本号(了解)</h2>
<p>
  版本号可以控制资源文件的缓存更新
</p>
<p>
  ①在配置文件中增加配置
</p>
<p><img loading="lazy" decoding="async" width="1031" height="474" src="/wp-content/uploads/2018/05/word-image-3962.png" class="wp-image-4430" srcset="/wp-content/uploads/2018/05/word-image-3962.png 1031w, /wp-content/uploads/2018/05/word-image-3962-300x138.png 300w, /wp-content/uploads/2018/05/word-image-3962-768x353.png 768w, /wp-content/uploads/2018/05/word-image-3962-1024x471.png 1024w" sizes="(max-width: 1031px) 100vw, 1031px" /></p>
<p>
  ②在模板中使用
</p>
<p><img loading="lazy" decoding="async" width="1064" height="686" src="/wp-content/uploads/2018/05/word-image-3963.png" class="wp-image-4431" srcset="/wp-content/uploads/2018/05/word-image-3963.png 1064w, /wp-content/uploads/2018/05/word-image-3963-300x193.png 300w, /wp-content/uploads/2018/05/word-image-3963-768x495.png 768w, /wp-content/uploads/2018/05/word-image-3963-1024x660.png 1024w" sizes="(max-width: 1064px) 100vw, 1064px" /></p>
<h2>页头页尾的公用</h2>
<p>
  ①提取头部HTML代码
</p>
<p><img loading="lazy" decoding="async" width="1105" height="571" src="/wp-content/uploads/2018/05/word-image-3964.png" class="wp-image-4432" srcset="/wp-content/uploads/2018/05/word-image-3964.png 1105w, /wp-content/uploads/2018/05/word-image-3964-300x155.png 300w, /wp-content/uploads/2018/05/word-image-3964-768x397.png 768w, /wp-content/uploads/2018/05/word-image-3964-1024x529.png 1024w" sizes="(max-width: 1105px) 100vw, 1105px" /></p>
<p>
  ②在index模板中引入头部
</p>
<p><img loading="lazy" decoding="async" width="948" height="597" src="/wp-content/uploads/2018/05/word-image-3965.png" class="wp-image-4433" srcset="/wp-content/uploads/2018/05/word-image-3965.png 948w, /wp-content/uploads/2018/05/word-image-3965-300x189.png 300w, /wp-content/uploads/2018/05/word-image-3965-768x484.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  ③提取底部的HTML代码
</p>
<p><img loading="lazy" decoding="async" width="1042" height="450" src="/wp-content/uploads/2018/05/word-image-3966.png" class="wp-image-4434" srcset="/wp-content/uploads/2018/05/word-image-3966.png 1042w, /wp-content/uploads/2018/05/word-image-3966-300x130.png 300w, /wp-content/uploads/2018/05/word-image-3966-768x332.png 768w, /wp-content/uploads/2018/05/word-image-3966-1024x442.png 1024w" sizes="(max-width: 1042px) 100vw, 1042px" /></p>
<p>
  ④index模板引入底部的代码
</p>
<p><img loading="lazy" decoding="async" width="971" height="597" src="/wp-content/uploads/2018/05/word-image-3967.png" class="wp-image-4435" srcset="/wp-content/uploads/2018/05/word-image-3967.png 971w, /wp-content/uploads/2018/05/word-image-3967-300x184.png 300w, /wp-content/uploads/2018/05/word-image-3967-768x472.png 768w" sizes="(max-width: 971px) 100vw, 971px" /></p>
<h2>显示商品列表页</h2>
<p>
  ①创建控制器方法显示模板
</p>
<p><img loading="lazy" decoding="async" width="933" height="391" src="/wp-content/uploads/2018/05/word-image-3968.png" class="wp-image-4436" srcset="/wp-content/uploads/2018/05/word-image-3968.png 933w, /wp-content/uploads/2018/05/word-image-3968-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3968-768x322.png 768w" sizes="(max-width: 933px) 100vw, 933px" /></p>
<p>
  ②拷贝模板文件
</p>
<p><img loading="lazy" decoding="async" width="1121" height="512" src="/wp-content/uploads/2018/05/word-image-3969.png" class="wp-image-4437" srcset="/wp-content/uploads/2018/05/word-image-3969.png 1121w, /wp-content/uploads/2018/05/word-image-3969-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3969-768x351.png 768w, /wp-content/uploads/2018/05/word-image-3969-1024x468.png 1024w" sizes="(max-width: 1121px) 100vw, 1121px" /></p>
<p>
  ③修改模板
</p>
<p><img loading="lazy" decoding="async" width="1059" height="710" src="/wp-content/uploads/2018/05/word-image-3970.png" class="wp-image-4438" srcset="/wp-content/uploads/2018/05/word-image-3970.png 1059w, /wp-content/uploads/2018/05/word-image-3970-300x201.png 300w, /wp-content/uploads/2018/05/word-image-3970-768x515.png 768w, /wp-content/uploads/2018/05/word-image-3970-1024x687.png 1024w" sizes="(max-width: 1059px) 100vw, 1059px" /></p>
<p>
  ④解决头部导航菜单展开与收缩效果
</p>
<p>
  先在index控制器下的index方法中赋予标识符
</p>
<p><img loading="lazy" decoding="async" width="934" height="442" src="/wp-content/uploads/2018/05/word-image-3971.png" class="wp-image-4439" srcset="/wp-content/uploads/2018/05/word-image-3971.png 934w, /wp-content/uploads/2018/05/word-image-3971-300x142.png 300w, /wp-content/uploads/2018/05/word-image-3971-768x363.png 768w" sizes="(max-width: 934px) 100vw, 934px" /></p>
<p>
  在模板中判断
</p>
<p><img loading="lazy" decoding="async" width="1124" height="671" src="/wp-content/uploads/2018/05/word-image-3972.png" class="wp-image-4440" srcset="/wp-content/uploads/2018/05/word-image-3972.png 1124w, /wp-content/uploads/2018/05/word-image-3972-300x179.png 300w, /wp-content/uploads/2018/05/word-image-3972-768x458.png 768w, /wp-content/uploads/2018/05/word-image-3972-1024x611.png 1024w" sizes="(max-width: 1124px) 100vw, 1124px" /></p>
<h2>商品详情页显示</h2>
<p>
  ①创建控制器方法加载模板
</p>
<p><img loading="lazy" decoding="async" width="980" height="408" src="/wp-content/uploads/2018/05/word-image-3973.png" class="wp-image-4441" srcset="/wp-content/uploads/2018/05/word-image-3973.png 980w, /wp-content/uploads/2018/05/word-image-3973-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3973-768x320.png 768w" sizes="(max-width: 980px) 100vw, 980px" /></p>
<p>
  ②拷贝模板
</p>
<p><img loading="lazy" decoding="async" width="1127" height="467" src="/wp-content/uploads/2018/05/word-image-3974.png" class="wp-image-4442" srcset="/wp-content/uploads/2018/05/word-image-3974.png 1127w, /wp-content/uploads/2018/05/word-image-3974-300x124.png 300w, /wp-content/uploads/2018/05/word-image-3974-768x318.png 768w, /wp-content/uploads/2018/05/word-image-3974-1024x424.png 1024w" sizes="(max-width: 1127px) 100vw, 1127px" /></p>
<p>
  ③处理模板资源地址
</p>
<p><img loading="lazy" decoding="async" width="1104" height="679" src="/wp-content/uploads/2018/05/word-image-3975.png" class="wp-image-4443" srcset="/wp-content/uploads/2018/05/word-image-3975.png 1104w, /wp-content/uploads/2018/05/word-image-3975-300x185.png 300w, /wp-content/uploads/2018/05/word-image-3975-768x472.png 768w, /wp-content/uploads/2018/05/word-image-3975-1024x630.png 1024w" sizes="(max-width: 1104px) 100vw, 1104px" /></p>
<p>
  ④模板公用
</p>
<p><img loading="lazy" decoding="async" width="1108" height="637" src="/wp-content/uploads/2018/05/word-image-3976.png" class="wp-image-4444" srcset="/wp-content/uploads/2018/05/word-image-3976.png 1108w, /wp-content/uploads/2018/05/word-image-3976-300x172.png 300w, /wp-content/uploads/2018/05/word-image-3976-768x442.png 768w, /wp-content/uploads/2018/05/word-image-3976-1024x589.png 1024w" sizes="(max-width: 1108px) 100vw, 1108px" /></p>
<h2>显示导航商品分类信息</h2>
<p>
  ①修改index方法获取数据
</p>
<p><img loading="lazy" decoding="async" width="1249" height="491" src="/wp-content/uploads/2018/05/word-image-3977.png" class="wp-image-4445" srcset="/wp-content/uploads/2018/05/word-image-3977.png 1249w, /wp-content/uploads/2018/05/word-image-3977-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3977-768x302.png 768w, /wp-content/uploads/2018/05/word-image-3977-1024x403.png 1024w" sizes="(max-width: 1249px) 100vw, 1249px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="941" height="569" src="/wp-content/uploads/2018/05/word-image-3978.png" class="wp-image-4446" srcset="/wp-content/uploads/2018/05/word-image-3978.png 941w, /wp-content/uploads/2018/05/word-image-3978-300x181.png 300w, /wp-content/uploads/2018/05/word-image-3978-768x464.png 768w" sizes="(max-width: 941px) 100vw, 941px" /></p>
<p>
  ②创建公共控制器构造方法获取数分类数据
</p>
<p><img loading="lazy" decoding="async" width="952" height="643" src="/wp-content/uploads/2018/05/word-image-3979.png" class="wp-image-4447" srcset="/wp-content/uploads/2018/05/word-image-3979.png 952w, /wp-content/uploads/2018/05/word-image-3979-300x203.png 300w, /wp-content/uploads/2018/05/word-image-3979-768x519.png 768w, /wp-content/uploads/2018/05/word-image-3979-220x150.png 220w" sizes="(max-width: 952px) 100vw, 952px" /></p>
<p>
  ③修改 其他控制器的继承关系
</p>
<p>
  修改index控制器
</p>
<p><img loading="lazy" decoding="async" width="940" height="598" src="/wp-content/uploads/2018/05/word-image-3980.png" class="wp-image-4448" srcset="/wp-content/uploads/2018/05/word-image-3980.png 940w, /wp-content/uploads/2018/05/word-image-3980-300x191.png 300w, /wp-content/uploads/2018/05/word-image-3980-768x489.png 768w" sizes="(max-width: 940px) 100vw, 940px" /></p>
<p>
  修改category控制器
</p>
<p><img loading="lazy" decoding="async" width="998" height="412" src="/wp-content/uploads/2018/05/word-image-3981.png" class="wp-image-4449" srcset="/wp-content/uploads/2018/05/word-image-3981.png 998w, /wp-content/uploads/2018/05/word-image-3981-300x124.png 300w, /wp-content/uploads/2018/05/word-image-3981-768x317.png 768w" sizes="(max-width: 998px) 100vw, 998px" /></p>
<p>
  修改goods控制器
</p>
<p><img loading="lazy" decoding="async" width="915" height="389" src="/wp-content/uploads/2018/05/word-image-3982.png" class="wp-image-4450" srcset="/wp-content/uploads/2018/05/word-image-3982.png 915w, /wp-content/uploads/2018/05/word-image-3982-300x128.png 300w, /wp-content/uploads/2018/05/word-image-3982-768x327.png 768w" sizes="(max-width: 915px) 100vw, 915px" /></p>
<p>
  ④显示第一层分类信息
</p>
<p><img loading="lazy" decoding="async" width="1125" height="671" src="/wp-content/uploads/2018/05/word-image-3983.png" class="wp-image-4451" srcset="/wp-content/uploads/2018/05/word-image-3983.png 1125w, /wp-content/uploads/2018/05/word-image-3983-300x179.png 300w, /wp-content/uploads/2018/05/word-image-3983-768x458.png 768w, /wp-content/uploads/2018/05/word-image-3983-1024x611.png 1024w" sizes="(max-width: 1125px) 100vw, 1125px" /><br />
<img loading="lazy" decoding="async" width="1317" height="516" src="/wp-content/uploads/2018/05/word-image-3984.png" class="wp-image-4452" srcset="/wp-content/uploads/2018/05/word-image-3984.png 1317w, /wp-content/uploads/2018/05/word-image-3984-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3984-768x301.png 768w, /wp-content/uploads/2018/05/word-image-3984-1024x401.png 1024w" sizes="(max-width: 1317px) 100vw, 1317px" /></p>
<p>
  ⑤显示第二层菜单
</p>
<p><img loading="lazy" decoding="async" width="1164" height="706" src="/wp-content/uploads/2018/05/word-image-3985.png" class="wp-image-4453" srcset="/wp-content/uploads/2018/05/word-image-3985.png 1164w, /wp-content/uploads/2018/05/word-image-3985-300x182.png 300w, /wp-content/uploads/2018/05/word-image-3985-768x466.png 768w, /wp-content/uploads/2018/05/word-image-3985-1024x621.png 1024w" sizes="(max-width: 1164px) 100vw, 1164px" /><br />
<img loading="lazy" decoding="async" width="820" height="322" src="/wp-content/uploads/2018/05/word-image-3986.png" class="wp-image-4454" srcset="/wp-content/uploads/2018/05/word-image-3986.png 820w, /wp-content/uploads/2018/05/word-image-3986-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3986-768x302.png 768w" sizes="(max-width: 820px) 100vw, 820px" /></p>
<p>
  ⑥显示第三层导航菜单
</p>
<p><img loading="lazy" decoding="async" width="1163" height="591" src="/wp-content/uploads/2018/05/word-image-3987.png" class="wp-image-4455" srcset="/wp-content/uploads/2018/05/word-image-3987.png 1163w, /wp-content/uploads/2018/05/word-image-3987-300x152.png 300w, /wp-content/uploads/2018/05/word-image-3987-768x390.png 768w, /wp-content/uploads/2018/05/word-image-3987-1024x520.png 1024w" sizes="(max-width: 1163px) 100vw, 1163px" /><br />
<img loading="lazy" decoding="async" width="997" height="635" src="/wp-content/uploads/2018/05/word-image-3988.png" class="wp-image-4456" srcset="/wp-content/uploads/2018/05/word-image-3988.png 997w, /wp-content/uploads/2018/05/word-image-3988-300x191.png 300w, /wp-content/uploads/2018/05/word-image-3988-768x489.png 768w" sizes="(max-width: 997px) 100vw, 997px" /></p>
<h2>显示首页中的推荐商品</h2>
<p>
  ①自定义模型创建方法可以获取推荐商品
</p>
<p><img loading="lazy" decoding="async" width="1053" height="704" src="/wp-content/uploads/2018/05/word-image-3989.png" class="wp-image-4457" srcset="/wp-content/uploads/2018/05/word-image-3989.png 1053w, /wp-content/uploads/2018/05/word-image-3989-300x201.png 300w, /wp-content/uploads/2018/05/word-image-3989-768x513.png 768w, /wp-content/uploads/2018/05/word-image-3989-1024x685.png 1024w" sizes="(max-width: 1053px) 100vw, 1053px" /></p>
<p>
  ②在控制器中获取推荐的商品
</p>
<p><img loading="lazy" decoding="async" width="1049" height="641" src="/wp-content/uploads/2018/05/word-image-3990.png" class="wp-image-4458" srcset="/wp-content/uploads/2018/05/word-image-3990.png 1049w, /wp-content/uploads/2018/05/word-image-3990-300x183.png 300w, /wp-content/uploads/2018/05/word-image-3990-768x469.png 768w, /wp-content/uploads/2018/05/word-image-3990-1024x626.png 1024w" sizes="(max-width: 1049px) 100vw, 1049px" /></p>
<p>
  ③修改配置项指定资源地址
</p>
<p><img loading="lazy" decoding="async" width="1040" height="620" src="/wp-content/uploads/2018/05/word-image-3991.png" class="wp-image-4459" srcset="/wp-content/uploads/2018/05/word-image-3991.png 1040w, /wp-content/uploads/2018/05/word-image-3991-300x179.png 300w, /wp-content/uploads/2018/05/word-image-3991-768x458.png 768w, /wp-content/uploads/2018/05/word-image-3991-1024x610.png 1024w" sizes="(max-width: 1040px) 100vw, 1040px" /></p>
<p>
  ④模板显示数据
</p>
<p><img loading="lazy" decoding="async" width="1064" height="701" src="/wp-content/uploads/2018/05/word-image-3992.png" class="wp-image-4460" srcset="/wp-content/uploads/2018/05/word-image-3992.png 1064w, /wp-content/uploads/2018/05/word-image-3992-300x198.png 300w, /wp-content/uploads/2018/05/word-image-3992-768x506.png 768w, /wp-content/uploads/2018/05/word-image-3992-1024x675.png 1024w" sizes="(max-width: 1064px) 100vw, 1064px" /><br />
<img loading="lazy" decoding="async" width="982" height="330" src="/wp-content/uploads/2018/05/word-image-3993.png" class="wp-image-4461" srcset="/wp-content/uploads/2018/05/word-image-3993.png 982w, /wp-content/uploads/2018/05/word-image-3993-300x101.png 300w, /wp-content/uploads/2018/05/word-image-3993-768x258.png 768w" sizes="(max-width: 982px) 100vw, 982px" /></p>
<h1>用户注册</h1>
<h2>用户数据表创建</h2>
<p>
  CREATE TABLE `shop_user` (
</p>
<p>
    `id` int(11) NOT NULL,
</p>
<p>
    `username` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;用户名&#8217;,
</p>
<p>
    `password` char(32) NOT NULL DEFAULT &#8221; COMMENT &#8216;密码&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h2>显示用户注册页</h2>
<p>
  ①创建方法加载模板
</p>
<p><img loading="lazy" decoding="async" width="939" height="573" src="/wp-content/uploads/2018/05/word-image-3994.png" class="wp-image-4462" srcset="/wp-content/uploads/2018/05/word-image-3994.png 939w, /wp-content/uploads/2018/05/word-image-3994-300x183.png 300w, /wp-content/uploads/2018/05/word-image-3994-768x469.png 768w" sizes="(max-width: 939px) 100vw, 939px" /></p>
<p>
  ②拷贝模板文件
</p>
<p><img loading="lazy" decoding="async" width="1105" height="496" src="/wp-content/uploads/2018/05/word-image-3995.png" class="wp-image-4463" srcset="/wp-content/uploads/2018/05/word-image-3995.png 1105w, /wp-content/uploads/2018/05/word-image-3995-300x135.png 300w, /wp-content/uploads/2018/05/word-image-3995-768x345.png 768w, /wp-content/uploads/2018/05/word-image-3995-1024x460.png 1024w" sizes="(max-width: 1105px) 100vw, 1105px" /></p>
<p>
  ③修改模板提取头部
</p>
<p><img loading="lazy" decoding="async" width="1070" height="591" src="/wp-content/uploads/2018/05/word-image-3996.png" class="wp-image-4464" srcset="/wp-content/uploads/2018/05/word-image-3996.png 1070w, /wp-content/uploads/2018/05/word-image-3996-300x166.png 300w, /wp-content/uploads/2018/05/word-image-3996-768x424.png 768w, /wp-content/uploads/2018/05/word-image-3996-1024x566.png 1024w" sizes="(max-width: 1070px) 100vw, 1070px" /></p>
<p>
  ④修改注册模板
</p>
<p><img loading="lazy" decoding="async" width="878" height="576" src="/wp-content/uploads/2018/05/word-image-3997.png" class="wp-image-4465" srcset="/wp-content/uploads/2018/05/word-image-3997.png 878w, /wp-content/uploads/2018/05/word-image-3997-300x197.png 300w, /wp-content/uploads/2018/05/word-image-3997-768x504.png 768w" sizes="(max-width: 878px) 100vw, 878px" /></p>
<p>
  ⑤修改footer.html模板
</p>
<p><img loading="lazy" decoding="async" width="884" height="349" src="/wp-content/uploads/2018/05/word-image-3998.png" class="wp-image-4466" srcset="/wp-content/uploads/2018/05/word-image-3998.png 884w, /wp-content/uploads/2018/05/word-image-3998-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3998-768x303.png 768w" sizes="(max-width: 884px) 100vw, 884px" /></p>
<h2>实现注册入库</h2>
<p>
  ①修改方法
</p>
<p><img loading="lazy" decoding="async" width="961" height="694" src="/wp-content/uploads/2018/05/word-image-3999.png" class="wp-image-4467" srcset="/wp-content/uploads/2018/05/word-image-3999.png 961w, /wp-content/uploads/2018/05/word-image-3999-300x217.png 300w, /wp-content/uploads/2018/05/word-image-3999-768x555.png 768w" sizes="(max-width: 961px) 100vw, 961px" /></p>
<p>
  ②创建模型
</p>
<p><img loading="lazy" decoding="async" width="1083" height="702" src="/wp-content/uploads/2018/05/word-image-4000.png" class="wp-image-4468" srcset="/wp-content/uploads/2018/05/word-image-4000.png 1083w, /wp-content/uploads/2018/05/word-image-4000-300x194.png 300w, /wp-content/uploads/2018/05/word-image-4000-768x498.png 768w, /wp-content/uploads/2018/05/word-image-4000-1024x664.png 1024w" sizes="(max-width: 1083px) 100vw, 1083px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4389.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TP3.2商城 （六）前台登录、商品展示、商品详情页、购物车</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4315.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4315.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 12:36:42 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[前台登录]]></category>
		<category><![CDATA[商品展示]]></category>
		<category><![CDATA[商品详情页]]></category>
		<category><![CDATA[购物车]]></category>
		<guid isPermaLink="false">/?p=4315</guid>

					<description><![CDATA[用户登录 显示用户登录界面 ①创建方法加载模板 ②拷贝登录模板 ③修改模板 实现登录 ①控制器调用模型方法实现 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>用户登录</h1>
<h2>显示用户登录界面</h2>
<p>
  ①创建方法加载模板
</p>
<p><img loading="lazy" decoding="async" width="840" height="435" src="/wp-content/uploads/2018/05/word-image-3852.png" class="wp-image-4316" srcset="/wp-content/uploads/2018/05/word-image-3852.png 840w, /wp-content/uploads/2018/05/word-image-3852-300x155.png 300w, /wp-content/uploads/2018/05/word-image-3852-768x398.png 768w" sizes="(max-width: 840px) 100vw, 840px" /></p>
<p>
  ②拷贝登录模板
</p>
<p><img loading="lazy" decoding="async" width="1163" height="553" src="/wp-content/uploads/2018/05/word-image-3853.png" class="wp-image-4317" srcset="/wp-content/uploads/2018/05/word-image-3853.png 1163w, /wp-content/uploads/2018/05/word-image-3853-300x143.png 300w, /wp-content/uploads/2018/05/word-image-3853-768x365.png 768w, /wp-content/uploads/2018/05/word-image-3853-1024x487.png 1024w" sizes="(max-width: 1163px) 100vw, 1163px" /></p>
<p>
  ③修改模板
</p>
<p><img loading="lazy" decoding="async" width="1079" height="690" src="/wp-content/uploads/2018/05/word-image-3854.png" class="wp-image-4318" srcset="/wp-content/uploads/2018/05/word-image-3854.png 1079w, /wp-content/uploads/2018/05/word-image-3854-300x192.png 300w, /wp-content/uploads/2018/05/word-image-3854-768x491.png 768w, /wp-content/uploads/2018/05/word-image-3854-1024x655.png 1024w" sizes="(max-width: 1079px) 100vw, 1079px" /><br />
<img loading="lazy" decoding="async" width="1189" height="534" src="/wp-content/uploads/2018/05/word-image-3855.png" class="wp-image-4319" srcset="/wp-content/uploads/2018/05/word-image-3855.png 1189w, /wp-content/uploads/2018/05/word-image-3855-300x135.png 300w, /wp-content/uploads/2018/05/word-image-3855-768x345.png 768w, /wp-content/uploads/2018/05/word-image-3855-1024x460.png 1024w" sizes="(max-width: 1189px) 100vw, 1189px" /></p>
<h2>实现登录</h2>
<p>
  ①控制器调用模型方法实现登录
</p>
<p><img loading="lazy" decoding="async" width="1068" height="675" src="/wp-content/uploads/2018/05/word-image-3856.png" class="wp-image-4320" srcset="/wp-content/uploads/2018/05/word-image-3856.png 1068w, /wp-content/uploads/2018/05/word-image-3856-300x190.png 300w, /wp-content/uploads/2018/05/word-image-3856-768x485.png 768w, /wp-content/uploads/2018/05/word-image-3856-1024x647.png 1024w" sizes="(max-width: 1068px) 100vw, 1068px" /></p>
<p>
  ②创建模型方法登录
</p>
<p><img loading="lazy" decoding="async" width="962" height="692" src="/wp-content/uploads/2018/05/word-image-3857.png" class="wp-image-4321" srcset="/wp-content/uploads/2018/05/word-image-3857.png 962w, /wp-content/uploads/2018/05/word-image-3857-300x216.png 300w, /wp-content/uploads/2018/05/word-image-3857-768x552.png 768w" sizes="(max-width: 962px) 100vw, 962px" /></p>
<h2>使用cookie加密</h2>
<p>
  ①拷贝加密解密函数
</p>
<p><img loading="lazy" decoding="async" width="943" height="702" src="/wp-content/uploads/2018/05/word-image-3858.png" class="wp-image-4322" srcset="/wp-content/uploads/2018/05/word-image-3858.png 943w, /wp-content/uploads/2018/05/word-image-3858-300x223.png 300w, /wp-content/uploads/2018/05/word-image-3858-768x572.png 768w" sizes="(max-width: 943px) 100vw, 943px" /></p>
<p>
  ②创建测试方法使用加密解密
</p>
<p><img loading="lazy" decoding="async" width="895" height="611" src="/wp-content/uploads/2018/05/word-image-3859.png" class="wp-image-4324" srcset="/wp-content/uploads/2018/05/word-image-3859.png 895w, /wp-content/uploads/2018/05/word-image-3859-300x205.png 300w, /wp-content/uploads/2018/05/word-image-3859-768x524.png 768w, /wp-content/uploads/2018/05/word-image-3859-220x150.png 220w" sizes="(max-width: 895px) 100vw, 895px" /><br />
<img loading="lazy" decoding="async" width="691" height="175" src="/wp-content/uploads/2018/05/word-image-3860.png" class="wp-image-4325" srcset="/wp-content/uploads/2018/05/word-image-3860.png 691w, /wp-content/uploads/2018/05/word-image-3860-300x76.png 300w" sizes="(max-width: 691px) 100vw, 691px" /></p>
<p>
  ③针对登录使用加密解密函数
</p>
<p><img loading="lazy" decoding="async" width="1051" height="679" src="/wp-content/uploads/2018/05/word-image-3861.png" class="wp-image-4326" srcset="/wp-content/uploads/2018/05/word-image-3861.png 1051w, /wp-content/uploads/2018/05/word-image-3861-300x194.png 300w, /wp-content/uploads/2018/05/word-image-3861-768x496.png 768w, /wp-content/uploads/2018/05/word-image-3861-1024x662.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" /></p>
<p>
  ④修改测试方法查看结果
</p>
<p><img loading="lazy" decoding="async" width="987" height="680" src="/wp-content/uploads/2018/05/word-image-3862.png" class="wp-image-4327" srcset="/wp-content/uploads/2018/05/word-image-3862.png 987w, /wp-content/uploads/2018/05/word-image-3862-300x207.png 300w, /wp-content/uploads/2018/05/word-image-3862-768x529.png 768w" sizes="(max-width: 987px) 100vw, 987px" /><br />
<img loading="lazy" decoding="async" width="590" height="242" src="/wp-content/uploads/2018/05/word-image-3863.png" class="wp-image-4328" srcset="/wp-content/uploads/2018/05/word-image-3863.png 590w, /wp-content/uploads/2018/05/word-image-3863-300x123.png 300w" sizes="(max-width: 590px) 100vw, 590px" /></p>
<h1>商品详情页数据展示</h1>
<h2>显示商品基本信息</h2>
<p>
  ①获取商品基本信息
</p>
<p><img loading="lazy" decoding="async" width="1061" height="688" src="/wp-content/uploads/2018/05/word-image-3864.png" class="wp-image-4329" srcset="/wp-content/uploads/2018/05/word-image-3864.png 1061w, /wp-content/uploads/2018/05/word-image-3864-300x195.png 300w, /wp-content/uploads/2018/05/word-image-3864-768x498.png 768w, /wp-content/uploads/2018/05/word-image-3864-1024x664.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /></p>
<p>
  ②修改模板显示数据
</p>
<p><img loading="lazy" decoding="async" width="1076" height="626" src="/wp-content/uploads/2018/05/word-image-3865.png" class="wp-image-4330" srcset="/wp-content/uploads/2018/05/word-image-3865.png 1076w, /wp-content/uploads/2018/05/word-image-3865-300x175.png 300w, /wp-content/uploads/2018/05/word-image-3865-768x447.png 768w, /wp-content/uploads/2018/05/word-image-3865-1024x596.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /><br />
<img loading="lazy" decoding="async" width="1044" height="420" src="/wp-content/uploads/2018/05/word-image-3866.png" class="wp-image-4331" srcset="/wp-content/uploads/2018/05/word-image-3866.png 1044w, /wp-content/uploads/2018/05/word-image-3866-300x121.png 300w, /wp-content/uploads/2018/05/word-image-3866-768x309.png 768w, /wp-content/uploads/2018/05/word-image-3866-1024x412.png 1024w" sizes="(max-width: 1044px) 100vw, 1044px" /></p>
<p>
  ③处理详情信息
</p>
<p><img loading="lazy" decoding="async" width="1014" height="699" src="/wp-content/uploads/2018/05/word-image-3867.png" class="wp-image-4332" srcset="/wp-content/uploads/2018/05/word-image-3867.png 1014w, /wp-content/uploads/2018/05/word-image-3867-300x207.png 300w, /wp-content/uploads/2018/05/word-image-3867-768x529.png 768w" sizes="(max-width: 1014px) 100vw, 1014px" /></p>
<p>
  ④显示商品详情介绍
</p>
<p><img loading="lazy" decoding="async" width="1078" height="402" src="/wp-content/uploads/2018/05/word-image-3868.png" class="wp-image-4333" srcset="/wp-content/uploads/2018/05/word-image-3868.png 1078w, /wp-content/uploads/2018/05/word-image-3868-300x112.png 300w, /wp-content/uploads/2018/05/word-image-3868-768x286.png 768w, /wp-content/uploads/2018/05/word-image-3868-1024x382.png 1024w" sizes="(max-width: 1078px) 100vw, 1078px" /><br />
<img loading="lazy" decoding="async" width="931" height="312" src="/wp-content/uploads/2018/05/word-image-3869.png" class="wp-image-4334" srcset="/wp-content/uploads/2018/05/word-image-3869.png 931w, /wp-content/uploads/2018/05/word-image-3869-300x101.png 300w, /wp-content/uploads/2018/05/word-image-3869-768x257.png 768w" sizes="(max-width: 931px) 100vw, 931px" /></p>
<h2>显示商品相册</h2>
<p>
  ①修改方法获取相册
</p>
<p><img loading="lazy" decoding="async" width="1100" height="696" src="/wp-content/uploads/2018/05/word-image-3870.png" class="wp-image-4335" srcset="/wp-content/uploads/2018/05/word-image-3870.png 1100w, /wp-content/uploads/2018/05/word-image-3870-300x190.png 300w, /wp-content/uploads/2018/05/word-image-3870-768x486.png 768w, /wp-content/uploads/2018/05/word-image-3870-1024x648.png 1024w" sizes="(max-width: 1100px) 100vw, 1100px" /></p>
<p>
  ②修改模板显示图片
</p>
<p>
  第一张图片
</p>
<p><img loading="lazy" decoding="async" width="1123" height="437" src="/wp-content/uploads/2018/05/word-image-3871.png" class="wp-image-4336" srcset="/wp-content/uploads/2018/05/word-image-3871.png 1123w, /wp-content/uploads/2018/05/word-image-3871-300x117.png 300w, /wp-content/uploads/2018/05/word-image-3871-768x299.png 768w, /wp-content/uploads/2018/05/word-image-3871-1024x398.png 1024w" sizes="(max-width: 1123px) 100vw, 1123px" /></p>
<p>
  其他图片
</p>
<p><img loading="lazy" decoding="async" width="1120" height="699" src="/wp-content/uploads/2018/05/word-image-3872.png" class="wp-image-4337" srcset="/wp-content/uploads/2018/05/word-image-3872.png 1120w, /wp-content/uploads/2018/05/word-image-3872-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3872-768x479.png 768w, /wp-content/uploads/2018/05/word-image-3872-1024x639.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" /><br />
<img loading="lazy" decoding="async" width="808" height="531" src="/wp-content/uploads/2018/05/word-image-3873.png" class="wp-image-4338" srcset="/wp-content/uploads/2018/05/word-image-3873.png 808w, /wp-content/uploads/2018/05/word-image-3873-300x197.png 300w, /wp-content/uploads/2018/05/word-image-3873-768x505.png 768w" sizes="(max-width: 808px) 100vw, 808px" /></p>
<h2>显示商品属性信息</h2>
<p>
  ①使用原生的sql语句获取商品属性信息
</p>
<p><img loading="lazy" decoding="async" width="1048" height="482" src="/wp-content/uploads/2018/05/word-image-3874.png" class="wp-image-4339" srcset="/wp-content/uploads/2018/05/word-image-3874.png 1048w, /wp-content/uploads/2018/05/word-image-3874-300x138.png 300w, /wp-content/uploads/2018/05/word-image-3874-768x353.png 768w, /wp-content/uploads/2018/05/word-image-3874-1024x471.png 1024w" sizes="(max-width: 1048px) 100vw, 1048px" /></p>
<p>
  ②在商品方法中获取属性
</p>
<p><img loading="lazy" decoding="async" width="1154" height="637" src="/wp-content/uploads/2018/05/word-image-3875.png" class="wp-image-4340" srcset="/wp-content/uploads/2018/05/word-image-3875.png 1154w, /wp-content/uploads/2018/05/word-image-3875-300x166.png 300w, /wp-content/uploads/2018/05/word-image-3875-768x424.png 768w, /wp-content/uploads/2018/05/word-image-3875-1024x565.png 1024w" sizes="(max-width: 1154px) 100vw, 1154px" /></p>
<p>
  ③将属性信息中唯一属性拆分出来
</p>
<p><img loading="lazy" decoding="async" width="983" height="654" src="/wp-content/uploads/2018/05/word-image-3876.png" class="wp-image-4341" srcset="/wp-content/uploads/2018/05/word-image-3876.png 983w, /wp-content/uploads/2018/05/word-image-3876-300x200.png 300w, /wp-content/uploads/2018/05/word-image-3876-768x511.png 768w" sizes="(max-width: 983px) 100vw, 983px" /></p>
<p>
  ④修改模板显示唯一属性
</p>
<p><img loading="lazy" decoding="async" width="1133" height="621" src="/wp-content/uploads/2018/05/word-image-3877.png" class="wp-image-4342" srcset="/wp-content/uploads/2018/05/word-image-3877.png 1133w, /wp-content/uploads/2018/05/word-image-3877-300x164.png 300w, /wp-content/uploads/2018/05/word-image-3877-768x421.png 768w, /wp-content/uploads/2018/05/word-image-3877-1024x561.png 1024w" sizes="(max-width: 1133px) 100vw, 1133px" /><br />
<img loading="lazy" decoding="async" width="1020" height="115" src="/wp-content/uploads/2018/05/word-image-3878.png" class="wp-image-4343" srcset="/wp-content/uploads/2018/05/word-image-3878.png 1020w, /wp-content/uploads/2018/05/word-image-3878-300x34.png 300w, /wp-content/uploads/2018/05/word-image-3878-768x87.png 768w" sizes="(max-width: 1020px) 100vw, 1020px" /></p>
<p>
  ⑤修改方法将单选属性拆分出来
</p>
<p><img loading="lazy" decoding="async" width="1132" height="701" src="/wp-content/uploads/2018/05/word-image-3879.png" class="wp-image-4344" srcset="/wp-content/uploads/2018/05/word-image-3879.png 1132w, /wp-content/uploads/2018/05/word-image-3879-300x186.png 300w, /wp-content/uploads/2018/05/word-image-3879-768x476.png 768w, /wp-content/uploads/2018/05/word-image-3879-1024x634.png 1024w" sizes="(max-width: 1132px) 100vw, 1132px" /><br />
<img loading="lazy" decoding="async" width="910" height="568" src="/wp-content/uploads/2018/05/word-image-3880.png" class="wp-image-4345" srcset="/wp-content/uploads/2018/05/word-image-3880.png 910w, /wp-content/uploads/2018/05/word-image-3880-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3880-768x479.png 768w" sizes="(max-width: 910px) 100vw, 910px" /></p>
<p>
  ⑥修改模板
</p>
<p><img loading="lazy" decoding="async" width="1145" height="693" src="/wp-content/uploads/2018/05/word-image-3881.png" class="wp-image-4346" srcset="/wp-content/uploads/2018/05/word-image-3881.png 1145w, /wp-content/uploads/2018/05/word-image-3881-300x182.png 300w, /wp-content/uploads/2018/05/word-image-3881-768x465.png 768w, /wp-content/uploads/2018/05/word-image-3881-1024x620.png 1024w" sizes="(max-width: 1145px) 100vw, 1145px" /><br />
<img loading="lazy" decoding="async" width="751" height="457" src="/wp-content/uploads/2018/05/word-image-3882.png" class="wp-image-4347" srcset="/wp-content/uploads/2018/05/word-image-3882.png 751w, /wp-content/uploads/2018/05/word-image-3882-300x183.png 300w" sizes="(max-width: 751px) 100vw, 751px" /></p>
<h1>购物车</h1>
<h2>3.1、购物车功能分析</h2>
<h3>3.1.1、功能分析</h3>
<p>
  1、没有登录可以使用购物车功能。需要将数据保存到cookie或者session
</p>
<p>
  2、登录之后也可以使用购物车。一般可以把购物车数据写入到数据库中。登录完成之后有数据转移操作
</p>
<p>
  3、当相同(属性也是一致)的商品再次加入购物车数量增加
</p>
<p>
  4、同一个商品属性不同在购物车显示也不一样（“货品”）
</p>
<h3>3.1.2、购物车数据保存位置</h3>
<p>
  在没有登录时购物车数据保存在cookie中，登录之后数据保存在数据库中，在用户完成登录之后需要对cookie中数据转移到数据库下
</p>
<h3>3.1.3、购物车记录什么数据</h3>
<p>
  1、需要记录商品的id标识 得到标识就可以获取到商品信息
</p>
<p>
  2、需要记录用户需要购买的单选属性信息。要的是属性值的id
</p>
<p>
  3、需要记录购买数量
</p>
<table>
<tr>
<td>
<p>
  商品id
</p>
</td>
<td>
<p>
  属性值的id组合
</p>
</td>
<td>
<p>
  数量
</p>
</td>
</tr>
<tr>
<td>
<p>
  1
</p>
</td>
<td>
<p>
  18,19
</p>
</td>
<td>
<p>
  2
</p>
</td>
</tr>
</table>
<h3>3.1.4、购物中针对不同单选属性的记录方式</h3>
<table>
<tr>
<td>
<p>
  商品id
</p>
</td>
<td>
<p>
  属性值的id组合
</p>
</td>
<td>
<p>
  数量
</p>
</td>
</tr>
<tr>
<td>
<p>
  1
</p>
</td>
<td>
<p>
  18(白色),19(32g)
</p>
</td>
<td>
<p>
  1
</p>
</td>
</tr>
<tr>
<td>
<p>
  1
</p>
</td>
<td>
<p>
  18(白色),20(64G)
</p>
</td>
<td>
<p>
  2
</p>
</td>
</tr>
</table>
<p>
  对于同一个商品，针对不同的单选属性组合对应的数据应该是多条
</p>
<h3>3.1.5、cookie存储如何存储</h3>
<p>
  对于cookie中存储数据。对于cookie本身只能存储字符串。可以使用PHP中数组格式存储数据然后在序列化之后写入。具体cookie中数据的保存安装PHP数组格式
</p>
<p>
  Array(
</p>
<p>
  Array(‘goods_id’=&gt;1,’goods_attr_id’=&gt;’18,19’,’goods_count’=&gt;2),
</p>
<p>
  Array(‘goods_id’=&gt;1,’goods_attr_id’=&gt;’18,19’,’goods_count’=&gt;2)
</p>
<p>
  )
</p>
<p>
  对于上述所写的格式是php中数组格式。当需要写入到cookie中是需要进行序列化操作
</p>
<h3>3.1.6、cookie数组中key怎么命名会方便</h3>
<p>
  当加入商品到购物车时，如果用户没有登录需要操作cookie。操作是需要先判断当前相同商品相同属性的商品信息是否存在。如果使用上面所写的二维数组格式判断需要循环遍历进行比较。可以将购物车中的数据转换为一维数组方便判断
</p>
<p>
  格式
</p>
<p>
  Array(
</p>
<p>
  ‘goods_id-goods_attr_id’=&gt;goods_count
</p>
<p>
  )
</p>
<h2>3.2、购物车数据表创建</h2>
<p>
  CREATE TABLE `shop_cart` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `user_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;用户ID&#8217;,
</p>
<p>
    `goods_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;商品ID&#8217;,
</p>
<p>
    `goods_attr_id` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;商品属性值id组合 多个逗号隔开&#8217;,
</p>
<p>
    `goods_count` smallint(6) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;购买数量&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h2>3.3、添加商品到购物车</h2>
<p>
  ①修改加入购物车为表单提交
</p>
<p><img loading="lazy" decoding="async" width="1132" height="478" src="/wp-content/uploads/2018/05/word-image-3883.png" class="wp-image-4348" srcset="/wp-content/uploads/2018/05/word-image-3883.png 1132w, /wp-content/uploads/2018/05/word-image-3883-300x127.png 300w, /wp-content/uploads/2018/05/word-image-3883-768x324.png 768w, /wp-content/uploads/2018/05/word-image-3883-1024x432.png 1024w" sizes="(max-width: 1132px) 100vw, 1132px" /></p>
<p>
  ②创建购物车控制器
</p>
<p><img loading="lazy" decoding="async" width="1075" height="426" src="/wp-content/uploads/2018/05/word-image-3884.png" class="wp-image-4349" srcset="/wp-content/uploads/2018/05/word-image-3884.png 1075w, /wp-content/uploads/2018/05/word-image-3884-300x119.png 300w, /wp-content/uploads/2018/05/word-image-3884-768x304.png 768w, /wp-content/uploads/2018/05/word-image-3884-1024x406.png 1024w" sizes="(max-width: 1075px) 100vw, 1075px" /></p>
<p>
  ③修改购买数量name值
</p>
<p><img loading="lazy" decoding="async" width="1060" height="504" src="/wp-content/uploads/2018/05/word-image-3885.png" class="wp-image-4350" srcset="/wp-content/uploads/2018/05/word-image-3885.png 1060w, /wp-content/uploads/2018/05/word-image-3885-300x143.png 300w, /wp-content/uploads/2018/05/word-image-3885-768x365.png 768w, /wp-content/uploads/2018/05/word-image-3885-1024x487.png 1024w" sizes="(max-width: 1060px) 100vw, 1060px" /></p>
<p>
  ④增加隐藏域实现商品标识提交
</p>
<p><img loading="lazy" decoding="async" width="1057" height="473" src="/wp-content/uploads/2018/05/word-image-3886.png" class="wp-image-4351" srcset="/wp-content/uploads/2018/05/word-image-3886.png 1057w, /wp-content/uploads/2018/05/word-image-3886-300x134.png 300w, /wp-content/uploads/2018/05/word-image-3886-768x344.png 768w, /wp-content/uploads/2018/05/word-image-3886-1024x458.png 1024w" sizes="(max-width: 1057px) 100vw, 1057px" /></p>
<p>
  ⑤修改模板实现属性值的id提交
</p>
<p><img loading="lazy" decoding="async" width="1129" height="492" src="/wp-content/uploads/2018/05/word-image-3887.png" class="wp-image-4352" srcset="/wp-content/uploads/2018/05/word-image-3887.png 1129w, /wp-content/uploads/2018/05/word-image-3887-300x131.png 300w, /wp-content/uploads/2018/05/word-image-3887-768x335.png 768w, /wp-content/uploads/2018/05/word-image-3887-1024x446.png 1024w" sizes="(max-width: 1129px) 100vw, 1129px" /></p>
<p>
  提交接受数据发现只有一个属性值ID提交
</p>
<p><img loading="lazy" decoding="async" width="447" height="166" src="/wp-content/uploads/2018/05/word-image-3888.png" class="wp-image-4353" srcset="/wp-content/uploads/2018/05/word-image-3888.png 447w, /wp-content/uploads/2018/05/word-image-3888-300x111.png 300w" sizes="(max-width: 447px) 100vw, 447px" /></p>
<p>
  由于需要有多个属性值ID因此需要设置为数组格式
</p>
<p><img loading="lazy" decoding="async" width="1115" height="532" src="/wp-content/uploads/2018/05/word-image-3889.png" class="wp-image-4354" srcset="/wp-content/uploads/2018/05/word-image-3889.png 1115w, /wp-content/uploads/2018/05/word-image-3889-300x143.png 300w, /wp-content/uploads/2018/05/word-image-3889-768x366.png 768w, /wp-content/uploads/2018/05/word-image-3889-1024x489.png 1024w" sizes="(max-width: 1115px) 100vw, 1115px" /><br />
<img loading="lazy" decoding="async" width="767" height="321" src="/wp-content/uploads/2018/05/word-image-3890.png" class="wp-image-4355" srcset="/wp-content/uploads/2018/05/word-image-3890.png 767w, /wp-content/uploads/2018/05/word-image-3890-300x126.png 300w" sizes="(max-width: 767px) 100vw, 767px" /></p>
<p>
  由于单选属性使用的是radio类型。设置为数组格式多个单选属性只会提交一个。因此需要将属性相同的设置为一组
</p>
<p><img loading="lazy" decoding="async" width="1113" height="537" src="/wp-content/uploads/2018/05/word-image-3891.png" class="wp-image-4356" srcset="/wp-content/uploads/2018/05/word-image-3891.png 1113w, /wp-content/uploads/2018/05/word-image-3891-300x145.png 300w, /wp-content/uploads/2018/05/word-image-3891-768x371.png 768w, /wp-content/uploads/2018/05/word-image-3891-1024x494.png 1024w" sizes="(max-width: 1113px) 100vw, 1113px" /><br />
<img loading="lazy" decoding="async" width="767" height="295" src="/wp-content/uploads/2018/05/word-image-3892.png" class="wp-image-4357" srcset="/wp-content/uploads/2018/05/word-image-3892.png 767w, /wp-content/uploads/2018/05/word-image-3892-300x115.png 300w" sizes="(max-width: 767px) 100vw, 767px" /></p>
<p>
  ⑥修改方法实现商品添加购物车
</p>
<p><img loading="lazy" decoding="async" width="1188" height="697" src="/wp-content/uploads/2018/05/word-image-3893.png" class="wp-image-4358" srcset="/wp-content/uploads/2018/05/word-image-3893.png 1188w, /wp-content/uploads/2018/05/word-image-3893-300x176.png 300w, /wp-content/uploads/2018/05/word-image-3893-768x451.png 768w, /wp-content/uploads/2018/05/word-image-3893-1024x601.png 1024w" sizes="(max-width: 1188px) 100vw, 1188px" /></p>
<p>
  ⑦创建购物车模型
</p>
<p><img loading="lazy" decoding="async" width="1018" height="677" src="/wp-content/uploads/2018/05/word-image-3894.png" class="wp-image-4359" srcset="/wp-content/uploads/2018/05/word-image-3894.png 1018w, /wp-content/uploads/2018/05/word-image-3894-300x200.png 300w, /wp-content/uploads/2018/05/word-image-3894-768x511.png 768w" sizes="(max-width: 1018px) 100vw, 1018px" /></p>
<p>
  ⑧实现添加到购物车
</p>
</p>
<p><img loading="lazy" decoding="async" width="1086" height="706" src="/wp-content/uploads/2018/05/word-image-3895.png" class="wp-image-4360" srcset="/wp-content/uploads/2018/05/word-image-3895.png 1086w, /wp-content/uploads/2018/05/word-image-3895-300x195.png 300w, /wp-content/uploads/2018/05/word-image-3895-768x499.png 768w, /wp-content/uploads/2018/05/word-image-3895-1024x666.png 1024w" sizes="(max-width: 1086px) 100vw, 1086px" /><br />
<img loading="lazy" decoding="async" width="1051" height="544" src="/wp-content/uploads/2018/05/word-image-3896.png" class="wp-image-4361" srcset="/wp-content/uploads/2018/05/word-image-3896.png 1051w, /wp-content/uploads/2018/05/word-image-3896-300x155.png 300w, /wp-content/uploads/2018/05/word-image-3896-768x398.png 768w, /wp-content/uploads/2018/05/word-image-3896-1024x530.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" /><br />
<img loading="lazy" decoding="async" width="1042" height="449" src="/wp-content/uploads/2018/05/word-image-3897.png" class="wp-image-4362" srcset="/wp-content/uploads/2018/05/word-image-3897.png 1042w, /wp-content/uploads/2018/05/word-image-3897-300x129.png 300w, /wp-content/uploads/2018/05/word-image-3897-768x331.png 768w, /wp-content/uploads/2018/05/word-image-3897-1024x441.png 1024w" sizes="(max-width: 1042px) 100vw, 1042px" /></p>
<p>
  ⑨创建测试方法测试
</p>
<p><img loading="lazy" decoding="async" width="807" height="453" src="/wp-content/uploads/2018/05/word-image-3898.png" class="wp-image-4363" srcset="/wp-content/uploads/2018/05/word-image-3898.png 807w, /wp-content/uploads/2018/05/word-image-3898-300x168.png 300w, /wp-content/uploads/2018/05/word-image-3898-768x431.png 768w" sizes="(max-width: 807px) 100vw, 807px" /></p>
<p>
  没有登录加入购物车结果
</p>
<p><img loading="lazy" decoding="async" width="585" height="164" src="/wp-content/uploads/2018/05/word-image-3899.png" class="wp-image-4364" srcset="/wp-content/uploads/2018/05/word-image-3899.png 585w, /wp-content/uploads/2018/05/word-image-3899-300x84.png 300w" sizes="(max-width: 585px) 100vw, 585px" /></p>
<p>
  ⑩测试已经登录的用户
</p>
<p><img loading="lazy" decoding="async" width="950" height="430" src="/wp-content/uploads/2018/05/word-image-3900.png" class="wp-image-4365" srcset="/wp-content/uploads/2018/05/word-image-3900.png 950w, /wp-content/uploads/2018/05/word-image-3900-300x136.png 300w, /wp-content/uploads/2018/05/word-image-3900-768x348.png 768w" sizes="(max-width: 950px) 100vw, 950px" /></p>
<h2>3.4、购物车列表显示</h2>
<p>
  ①创建index方法
</p>
<p><img loading="lazy" decoding="async" width="1025" height="474" src="/wp-content/uploads/2018/05/word-image-3901.png" class="wp-image-4366" srcset="/wp-content/uploads/2018/05/word-image-3901.png 1025w, /wp-content/uploads/2018/05/word-image-3901-300x139.png 300w, /wp-content/uploads/2018/05/word-image-3901-768x355.png 768w, /wp-content/uploads/2018/05/word-image-3901-1024x474.png 1024w" sizes="(max-width: 1025px) 100vw, 1025px" /></p>
<p>
  ②在模型中定义getList方法
</p>
<p><img loading="lazy" decoding="async" width="869" height="422" src="/wp-content/uploads/2018/05/word-image-3902.png" class="wp-image-4367" srcset="/wp-content/uploads/2018/05/word-image-3902.png 869w, /wp-content/uploads/2018/05/word-image-3902-300x146.png 300w, /wp-content/uploads/2018/05/word-image-3902-768x373.png 768w" sizes="(max-width: 869px) 100vw, 869px" /></p>
<p>
  ③拷贝购物车列表模板
</p>
<p><img loading="lazy" decoding="async" width="1133" height="618" src="/wp-content/uploads/2018/05/word-image-3903.png" class="wp-image-4368" srcset="/wp-content/uploads/2018/05/word-image-3903.png 1133w, /wp-content/uploads/2018/05/word-image-3903-300x164.png 300w, /wp-content/uploads/2018/05/word-image-3903-768x419.png 768w, /wp-content/uploads/2018/05/word-image-3903-1024x559.png 1024w" sizes="(max-width: 1133px) 100vw, 1133px" /></p>
<p>
  ④修改模板资源地址
</p>
<p><img loading="lazy" decoding="async" width="1066" height="661" src="/wp-content/uploads/2018/05/word-image-3904.png" class="wp-image-4369" srcset="/wp-content/uploads/2018/05/word-image-3904.png 1066w, /wp-content/uploads/2018/05/word-image-3904-300x186.png 300w, /wp-content/uploads/2018/05/word-image-3904-768x476.png 768w, /wp-content/uploads/2018/05/word-image-3904-1024x635.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /></p>
<p>
  ⑤修改getlist方法获取购物车中数据
</p>
<p><img loading="lazy" decoding="async" width="1076" height="696" src="/wp-content/uploads/2018/05/word-image-3905.png" class="wp-image-4370" srcset="/wp-content/uploads/2018/05/word-image-3905.png 1076w, /wp-content/uploads/2018/05/word-image-3905-300x194.png 300w, /wp-content/uploads/2018/05/word-image-3905-768x497.png 768w, /wp-content/uploads/2018/05/word-image-3905-1024x662.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /></p>
<p>
  没有登录的结果
</p>
<p><img loading="lazy" decoding="async" width="674" height="161" src="/wp-content/uploads/2018/05/word-image-3906.png" class="wp-image-4371" srcset="/wp-content/uploads/2018/05/word-image-3906.png 674w, /wp-content/uploads/2018/05/word-image-3906-300x72.png 300w" sizes="(max-width: 674px) 100vw, 674px" /></p>
<p>
  已经登录的结构
</p>
<p><img loading="lazy" decoding="async" width="457" height="209" src="/wp-content/uploads/2018/05/word-image-3907.png" class="wp-image-4372" srcset="/wp-content/uploads/2018/05/word-image-3907.png 457w, /wp-content/uploads/2018/05/word-image-3907-300x137.png 300w" sizes="(max-width: 457px) 100vw, 457px" /></p>
<p>
  ⑥修改getList方法获取商品信息及属性信息
</p>
<p><img loading="lazy" decoding="async" width="1077" height="650" src="/wp-content/uploads/2018/05/word-image-3908.png" class="wp-image-4373" srcset="/wp-content/uploads/2018/05/word-image-3908.png 1077w, /wp-content/uploads/2018/05/word-image-3908-300x181.png 300w, /wp-content/uploads/2018/05/word-image-3908-768x464.png 768w, /wp-content/uploads/2018/05/word-image-3908-1024x618.png 1024w" sizes="(max-width: 1077px) 100vw, 1077px" /></p>
<p>
  已经登录结果
</p>
<p><img loading="lazy" decoding="async" width="832" height="559" src="/wp-content/uploads/2018/05/word-image-3909.png" class="wp-image-4374" srcset="/wp-content/uploads/2018/05/word-image-3909.png 832w, /wp-content/uploads/2018/05/word-image-3909-300x202.png 300w, /wp-content/uploads/2018/05/word-image-3909-768x516.png 768w" sizes="(max-width: 832px) 100vw, 832px" /></p>
<p>
  没有登录
</p>
<p><img loading="lazy" decoding="async" width="812" height="481" src="/wp-content/uploads/2018/05/word-image-3910.png" class="wp-image-4375" srcset="/wp-content/uploads/2018/05/word-image-3910.png 812w, /wp-content/uploads/2018/05/word-image-3910-300x178.png 300w, /wp-content/uploads/2018/05/word-image-3910-768x455.png 768w" sizes="(max-width: 812px) 100vw, 812px" /></p>
<p>
  ⑦模板显示
</p>
<p><img loading="lazy" decoding="async" width="1082" height="701" src="/wp-content/uploads/2018/05/word-image-3911.png" class="wp-image-4376" srcset="/wp-content/uploads/2018/05/word-image-3911.png 1082w, /wp-content/uploads/2018/05/word-image-3911-300x194.png 300w, /wp-content/uploads/2018/05/word-image-3911-768x498.png 768w, /wp-content/uploads/2018/05/word-image-3911-1024x663.png 1024w" sizes="(max-width: 1082px) 100vw, 1082px" /></p>
<p>
  ⑧控制器调用方法计算出总金额
</p>
<p><img loading="lazy" decoding="async" width="909" height="607" src="/wp-content/uploads/2018/05/word-image-3912.png" class="wp-image-4377" srcset="/wp-content/uploads/2018/05/word-image-3912.png 909w, /wp-content/uploads/2018/05/word-image-3912-300x200.png 300w, /wp-content/uploads/2018/05/word-image-3912-768x513.png 768w" sizes="(max-width: 909px) 100vw, 909px" /></p>
<p>
  ⑨创建模型方法计算总金额
</p>
<p><img loading="lazy" decoding="async" width="1009" height="663" src="/wp-content/uploads/2018/05/word-image-3913.png" class="wp-image-4378" srcset="/wp-content/uploads/2018/05/word-image-3913.png 1009w, /wp-content/uploads/2018/05/word-image-3913-300x197.png 300w, /wp-content/uploads/2018/05/word-image-3913-768x505.png 768w" sizes="(max-width: 1009px) 100vw, 1009px" /></p>
<h2>3.5、删除购物车</h2>
<p>
  ①修改模板设置删除的连接地址
</p>
<p><img loading="lazy" decoding="async" width="1105" height="389" src="/wp-content/uploads/2018/05/word-image-3914.png" class="wp-image-4379" srcset="/wp-content/uploads/2018/05/word-image-3914.png 1105w, /wp-content/uploads/2018/05/word-image-3914-300x106.png 300w, /wp-content/uploads/2018/05/word-image-3914-768x270.png 768w, /wp-content/uploads/2018/05/word-image-3914-1024x360.png 1024w" sizes="(max-width: 1105px) 100vw, 1105px" /></p>
<p>
  ②创建方法调用模型方法实现删除
</p>
<p><img loading="lazy" decoding="async" width="897" height="439" src="/wp-content/uploads/2018/05/word-image-3915.png" class="wp-image-4380" srcset="/wp-content/uploads/2018/05/word-image-3915.png 897w, /wp-content/uploads/2018/05/word-image-3915-300x147.png 300w, /wp-content/uploads/2018/05/word-image-3915-768x376.png 768w" sizes="(max-width: 897px) 100vw, 897px" /></p>
<p>
  ③创建模型方法实现删除
</p>
<p><img loading="lazy" decoding="async" width="1040" height="695" src="/wp-content/uploads/2018/05/word-image-3916.png" class="wp-image-4381" srcset="/wp-content/uploads/2018/05/word-image-3916.png 1040w, /wp-content/uploads/2018/05/word-image-3916-300x200.png 300w, /wp-content/uploads/2018/05/word-image-3916-768x513.png 768w, /wp-content/uploads/2018/05/word-image-3916-1024x684.png 1024w" sizes="(max-width: 1040px) 100vw, 1040px" /></p>
<h2>3.6、清空购物车</h2>
<p>
  ①增加清空购物车连接地址
</p>
<p><img loading="lazy" decoding="async" width="1053" height="433" src="/wp-content/uploads/2018/05/word-image-3917.png" class="wp-image-4382" srcset="/wp-content/uploads/2018/05/word-image-3917.png 1053w, /wp-content/uploads/2018/05/word-image-3917-300x123.png 300w, /wp-content/uploads/2018/05/word-image-3917-768x316.png 768w, /wp-content/uploads/2018/05/word-image-3917-1024x421.png 1024w" sizes="(max-width: 1053px) 100vw, 1053px" /></p>
<p>
  ②创建方法实现清空
</p>
<p><img loading="lazy" decoding="async" width="948" height="348" src="/wp-content/uploads/2018/05/word-image-3918.png" class="wp-image-4383" srcset="/wp-content/uploads/2018/05/word-image-3918.png 948w, /wp-content/uploads/2018/05/word-image-3918-300x110.png 300w, /wp-content/uploads/2018/05/word-image-3918-768x282.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  ③在模型中创建方法
</p>
<p><img loading="lazy" decoding="async" width="1062" height="456" src="/wp-content/uploads/2018/05/word-image-3919.png" class="wp-image-4384" srcset="/wp-content/uploads/2018/05/word-image-3919.png 1062w, /wp-content/uploads/2018/05/word-image-3919-300x129.png 300w, /wp-content/uploads/2018/05/word-image-3919-768x330.png 768w, /wp-content/uploads/2018/05/word-image-3919-1024x440.png 1024w" sizes="(max-width: 1062px) 100vw, 1062px" /></p>
<h2>3.7、实现登录之后购物车数据转移</h2>
<p>
  ①创建转移的模型方法
</p>
<p><img loading="lazy" decoding="async" width="1035" height="671" src="/wp-content/uploads/2018/05/word-image-3920.png" class="wp-image-4385" srcset="/wp-content/uploads/2018/05/word-image-3920.png 1035w, /wp-content/uploads/2018/05/word-image-3920-300x194.png 300w, /wp-content/uploads/2018/05/word-image-3920-768x498.png 768w, /wp-content/uploads/2018/05/word-image-3920-1024x664.png 1024w" sizes="(max-width: 1035px) 100vw, 1035px" /><br />
<img loading="lazy" decoding="async" width="1052" height="356" src="/wp-content/uploads/2018/05/word-image-3921.png" class="wp-image-4386" srcset="/wp-content/uploads/2018/05/word-image-3921.png 1052w, /wp-content/uploads/2018/05/word-image-3921-300x102.png 300w, /wp-content/uploads/2018/05/word-image-3921-768x260.png 768w, /wp-content/uploads/2018/05/word-image-3921-1024x347.png 1024w" sizes="(max-width: 1052px) 100vw, 1052px" /></p>
<p>
  ②在登录完成之后触发转移
</p>
<p><img loading="lazy" decoding="async" width="986" height="522" src="/wp-content/uploads/2018/05/word-image-3922.png" class="wp-image-4387" srcset="/wp-content/uploads/2018/05/word-image-3922.png 986w, /wp-content/uploads/2018/05/word-image-3922-300x159.png 300w, /wp-content/uploads/2018/05/word-image-3922-768x407.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4315.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TP3.2商城 （七）接口、CURL、手机注册、购物车下单</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4240.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4240.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 12:31:34 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[手机注册]]></category>
		<category><![CDATA[接口]]></category>
		<category><![CDATA[购物车下单]]></category>
		<guid isPermaLink="false">/?p=4240</guid>

					<description><![CDATA[接口概述 接口介绍 接口又称为API(Application Programming Interface应用程 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>接口概述</h1>
<h2>接口介绍</h2>
<p>
  接口又称为API(Application Programming Interface应用程序编程接口)。是一些预先定义的函数，目的是提供应用程序与开发人员基于某软件或硬件的访问一组例程的能力，而又无需访问源码或理解内部工作机制的细节。
</p>
<p>
  一切皆为接口。只要能够提供一种服务就是接口。对于常见的接口返回数据格式为xml或者json
</p>
<h2>接口的使用原理</h2>
<p><img loading="lazy" decoding="async" width="948" height="389" src="/wp-content/uploads/2018/05/word-image-3779.png" class="wp-image-4241" srcset="/wp-content/uploads/2018/05/word-image-3779.png 948w, /wp-content/uploads/2018/05/word-image-3779-300x123.png 300w, /wp-content/uploads/2018/05/word-image-3779-768x315.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  本质就是发送请求然后响应
</p>
<h2>接口使用的注意事项</h2>
<p>
  当调用别人所提供的接口时最为重要的看文档。在文档中一定会具体的列出请求地址、请求方式、请求参数、返回格式跟返回的数据。对于比较重要的接口往往都会提供demo例如支付。对于不需要回调的接口可以直接本地进行测试。如果需要回调必须发布到外网中才可以测试
</p>
<p>
  回调：当调用别人的接口完成之后，别人的接口还需要在调用自己提供的接口
</p>
<h2>curl使用</h2>
<p>
  使用curl必须开启curl扩展
</p>
<h3>curl使用步骤</h3>
<ol>
<li>
  打开会话curl_init
</li>
<li>
  设置参数curl_setopt
</li>
<li>
  执行请求curl_exec
</li>
<li>
  关闭会话curl_close
</li>
</ol>
<h3>使用curl实现get请求</h3>
<p><img loading="lazy" decoding="async" width="1085" height="704" src="/wp-content/uploads/2018/05/word-image-3780.png" class="wp-image-4242" srcset="/wp-content/uploads/2018/05/word-image-3780.png 1085w, /wp-content/uploads/2018/05/word-image-3780-300x195.png 300w, /wp-content/uploads/2018/05/word-image-3780-768x498.png 768w, /wp-content/uploads/2018/05/word-image-3780-1024x664.png 1024w" sizes="(max-width: 1085px) 100vw, 1085px" /></p>
<h3>使用curl实现post请求</h3>
<p>
  ①创建表单
</p>
<p><img loading="lazy" decoding="async" width="876" height="560" src="/wp-content/uploads/2018/05/word-image-3781.png" class="wp-image-4243" srcset="/wp-content/uploads/2018/05/word-image-3781.png 876w, /wp-content/uploads/2018/05/word-image-3781-300x192.png 300w, /wp-content/uploads/2018/05/word-image-3781-768x491.png 768w" sizes="(max-width: 876px) 100vw, 876px" /></p>
<p>
  ②创建php文件对请求进行处理
</p>
<p><img loading="lazy" decoding="async" width="729" height="302" src="/wp-content/uploads/2018/05/word-image-3782.png" class="wp-image-4244" srcset="/wp-content/uploads/2018/05/word-image-3782.png 729w, /wp-content/uploads/2018/05/word-image-3782-300x124.png 300w" sizes="(max-width: 729px) 100vw, 729px" /></p>
<p>
  ③使用curl工具发送post请求
</p>
<p><img loading="lazy" decoding="async" width="1002" height="701" src="/wp-content/uploads/2018/05/word-image-3783.png" class="wp-image-4245" srcset="/wp-content/uploads/2018/05/word-image-3783.png 1002w, /wp-content/uploads/2018/05/word-image-3783-300x210.png 300w, /wp-content/uploads/2018/05/word-image-3783-768x537.png 768w" sizes="(max-width: 1002px) 100vw, 1002px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="688" height="120" src="/wp-content/uploads/2018/05/word-image-3784.png" class="wp-image-4246" srcset="/wp-content/uploads/2018/05/word-image-3784.png 688w, /wp-content/uploads/2018/05/word-image-3784-300x52.png 300w" sizes="(max-width: 688px) 100vw, 688px" /></p>
<h2>调用第三方接口的案例</h2>
<h3>申请接口使用权限</h3>
<p><a href="https://www.juhe.cn/">https://www.juhe.cn/</a>
</p>
<p>
  聚合数据为一个专门提供接口服务的平台。部分接口免费使用。
</p>
<p>
  ①注册为会员
</p>
<p>
  ②登录到会员中心进行个人的认证
</p>
<p><img loading="lazy" decoding="async" width="186" height="289" src="/wp-content/uploads/2018/05/word-image-3785.png" class="wp-image-4247" /></p>
<p>
  ③申请接口使用权限
</p>
<p><img loading="lazy" decoding="async" width="1177" height="449" src="/wp-content/uploads/2018/05/word-image-3786.png" class="wp-image-4248" srcset="/wp-content/uploads/2018/05/word-image-3786.png 1177w, /wp-content/uploads/2018/05/word-image-3786-300x114.png 300w, /wp-content/uploads/2018/05/word-image-3786-768x293.png 768w, /wp-content/uploads/2018/05/word-image-3786-1024x391.png 1024w" sizes="(max-width: 1177px) 100vw, 1177px" /><br />
<img loading="lazy" decoding="async" width="797" height="565" src="/wp-content/uploads/2018/05/word-image-3787.png" class="wp-image-4249" srcset="/wp-content/uploads/2018/05/word-image-3787.png 797w, /wp-content/uploads/2018/05/word-image-3787-300x213.png 300w, /wp-content/uploads/2018/05/word-image-3787-768x544.png 768w" sizes="(max-width: 797px) 100vw, 797px" /></p>
<p>
  ④对申请的接口进行认证
</p>
<p><img loading="lazy" decoding="async" width="1074" height="159" src="/wp-content/uploads/2018/05/word-image-3788.png" class="wp-image-4250" srcset="/wp-content/uploads/2018/05/word-image-3788.png 1074w, /wp-content/uploads/2018/05/word-image-3788-300x44.png 300w, /wp-content/uploads/2018/05/word-image-3788-768x114.png 768w, /wp-content/uploads/2018/05/word-image-3788-1024x152.png 1024w" sizes="(max-width: 1074px) 100vw, 1074px" /><br />
<img loading="lazy" decoding="async" width="808" height="528" src="/wp-content/uploads/2018/05/word-image-3789.png" class="wp-image-4251" srcset="/wp-content/uploads/2018/05/word-image-3789.png 808w, /wp-content/uploads/2018/05/word-image-3789-300x196.png 300w, /wp-content/uploads/2018/05/word-image-3789-768x502.png 768w" sizes="(max-width: 808px) 100vw, 808px" /></p>
<p>
  ⑤查看身份认证标识
</p>
<p><img loading="lazy" decoding="async" width="1100" height="217" src="/wp-content/uploads/2018/05/word-image-3790.png" class="wp-image-4252" srcset="/wp-content/uploads/2018/05/word-image-3790.png 1100w, /wp-content/uploads/2018/05/word-image-3790-300x59.png 300w, /wp-content/uploads/2018/05/word-image-3790-768x152.png 768w, /wp-content/uploads/2018/05/word-image-3790-1024x202.png 1024w" sizes="(max-width: 1100px) 100vw, 1100px" /></p>
<h3>查看接口使用文档</h3>
<p>
  ①进入接口文档
</p>
<p><img loading="lazy" decoding="async" width="1343" height="407" src="/wp-content/uploads/2018/05/word-image-3791.png" class="wp-image-4253" srcset="/wp-content/uploads/2018/05/word-image-3791.png 1343w, /wp-content/uploads/2018/05/word-image-3791-300x91.png 300w, /wp-content/uploads/2018/05/word-image-3791-768x233.png 768w, /wp-content/uploads/2018/05/word-image-3791-1024x310.png 1024w" sizes="(max-width: 1343px) 100vw, 1343px" /><br />
<img loading="lazy" decoding="async" width="1029" height="487" src="/wp-content/uploads/2018/05/word-image-3792.png" class="wp-image-4254" srcset="/wp-content/uploads/2018/05/word-image-3792.png 1029w, /wp-content/uploads/2018/05/word-image-3792-300x142.png 300w, /wp-content/uploads/2018/05/word-image-3792-768x363.png 768w, /wp-content/uploads/2018/05/word-image-3792-1024x485.png 1024w" sizes="(max-width: 1029px) 100vw, 1029px" /></p>
<p>
  ②查看文档
</p>
<p><img loading="lazy" decoding="async" width="1025" height="536" src="/wp-content/uploads/2018/05/word-image-3793.png" class="wp-image-4255" srcset="/wp-content/uploads/2018/05/word-image-3793.png 1025w, /wp-content/uploads/2018/05/word-image-3793-300x157.png 300w, /wp-content/uploads/2018/05/word-image-3793-768x402.png 768w, /wp-content/uploads/2018/05/word-image-3793-1024x535.png 1024w" sizes="(max-width: 1025px) 100vw, 1025px" /></p>
<p>
  返回数据结果如下
</p>
<p><img loading="lazy" decoding="async" width="782" height="554" src="/wp-content/uploads/2018/05/word-image-3794.png" class="wp-image-4256" srcset="/wp-content/uploads/2018/05/word-image-3794.png 782w, /wp-content/uploads/2018/05/word-image-3794-300x213.png 300w, /wp-content/uploads/2018/05/word-image-3794-768x544.png 768w" sizes="(max-width: 782px) 100vw, 782px" /></p>
<h3>演示调用接口</h3>
<p>
  ①编写代码调用接口
</p>
<p><img loading="lazy" decoding="async" width="1117" height="488" src="/wp-content/uploads/2018/05/word-image-3795.png" class="wp-image-4257" srcset="/wp-content/uploads/2018/05/word-image-3795.png 1117w, /wp-content/uploads/2018/05/word-image-3795-300x131.png 300w, /wp-content/uploads/2018/05/word-image-3795-768x336.png 768w, /wp-content/uploads/2018/05/word-image-3795-1024x447.png 1024w" sizes="(max-width: 1117px) 100vw, 1117px" /></p>
<p>
  ②查看结果
</p>
<p><img loading="lazy" decoding="async" width="1361" height="232" src="/wp-content/uploads/2018/05/word-image-3796.png" class="wp-image-4258" srcset="/wp-content/uploads/2018/05/word-image-3796.png 1361w, /wp-content/uploads/2018/05/word-image-3796-300x51.png 300w, /wp-content/uploads/2018/05/word-image-3796-768x131.png 768w, /wp-content/uploads/2018/05/word-image-3796-1024x175.png 1024w" sizes="(max-width: 1361px) 100vw, 1361px" /></p>
<h2>本地接口案例</h2>
<p>
  APP登录
</p>
<h3>编写接口文档</h3>
<table>
<tr>
<td colspan="4">
<p>
  用户登录接口
</p>
</td>
</tr>
<tr>
<td>
<p>
  请求地址
</p>
</td>
<td colspan="3">
<p>
  http://shop.com/demo/demo5.php
</p>
</td>
</tr>
<tr>
<td>
<p>
  请求方式
</p>
</td>
<td colspan="3">
<p>
  http协议的get或者post
</p>
</td>
</tr>
<tr>
<td>
<p>
  返回结果格式
</p>
</td>
<td colspan="3">
<p>
  Json
</p>
</td>
</tr>
<tr>
<td>
<p>
  请求参数
</p>
</td>
<td>
<p>
  Username
</p>
</td>
<td>
<p>
  用户名
</p>
</td>
<td>
<p>
  必填项
</p>
</td>
</tr>
<tr>
<td></td>
<td>
<p>
  Password
</p>
</td>
<td>
<p>
  密码
</p>
</td>
<td>
<p>
  必填项
</p>
</td>
</tr>
<tr>
<td>
<p>
  返回结果
</p>
</td>
<td>
<p>
  Status
</p>
</td>
<td>
<p>
  状态码
</p>
</td>
<td>
<p>
  0失败1为成功
</p>
</td>
</tr>
<tr>
<td></td>
<td>
<p>
  Msg
</p>
</td>
<td>
<p>
  提示信息
</p>
</td>
<td></td>
</tr>
<tr>
<td></td>
<td>
<p>
  Data
</p>
</td>
<td>
<p>
  数据集合
</p>
</td>
<td>
<p>
  包括了多个信息
</p>
</td>
</tr>
</table>
<h3>代码实现</h3>
<p>
  ①编写代码
</p>
<p><img loading="lazy" decoding="async" width="1090" height="692" src="/wp-content/uploads/2018/05/word-image-3797.png" class="wp-image-4259" srcset="/wp-content/uploads/2018/05/word-image-3797.png 1090w, /wp-content/uploads/2018/05/word-image-3797-300x190.png 300w, /wp-content/uploads/2018/05/word-image-3797-768x488.png 768w, /wp-content/uploads/2018/05/word-image-3797-1024x650.png 1024w" sizes="(max-width: 1090px) 100vw, 1090px" /></p>
<p>
  ②效果
</p>
<p><img loading="lazy" decoding="async" width="1006" height="131" src="/wp-content/uploads/2018/05/word-image-3798.png" class="wp-image-4260" srcset="/wp-content/uploads/2018/05/word-image-3798.png 1006w, /wp-content/uploads/2018/05/word-image-3798-300x39.png 300w, /wp-content/uploads/2018/05/word-image-3798-768x100.png 768w" sizes="(max-width: 1006px) 100vw, 1006px" /></p>
<h1>短信接口</h1>
<h2>短信接口注册</h2>
<p>
  ①注册会员
</p>
<p><a href="http://www.yuntongxun.com/">http://www.yuntongxun.com/</a>
</p>
<p><img loading="lazy" decoding="async" width="1217" height="508" src="/wp-content/uploads/2018/05/word-image-3799.png" class="wp-image-4261" srcset="/wp-content/uploads/2018/05/word-image-3799.png 1217w, /wp-content/uploads/2018/05/word-image-3799-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3799-768x321.png 768w, /wp-content/uploads/2018/05/word-image-3799-1024x427.png 1024w" sizes="(max-width: 1217px) 100vw, 1217px" /></p>
<p>
  ②登录进入控制台查看身份标识
</p>
<p><img loading="lazy" decoding="async" width="1332" height="604" src="/wp-content/uploads/2018/05/word-image-3800.png" class="wp-image-4262" srcset="/wp-content/uploads/2018/05/word-image-3800.png 1332w, /wp-content/uploads/2018/05/word-image-3800-300x136.png 300w, /wp-content/uploads/2018/05/word-image-3800-768x348.png 768w, /wp-content/uploads/2018/05/word-image-3800-1024x464.png 1024w" sizes="(max-width: 1332px) 100vw, 1332px" /></p>
<p>
  ③创建应用
</p>
<p><img loading="lazy" decoding="async" width="1195" height="587" src="/wp-content/uploads/2018/05/word-image-3801.png" class="wp-image-4263" srcset="/wp-content/uploads/2018/05/word-image-3801.png 1195w, /wp-content/uploads/2018/05/word-image-3801-300x147.png 300w, /wp-content/uploads/2018/05/word-image-3801-768x377.png 768w, /wp-content/uploads/2018/05/word-image-3801-1024x503.png 1024w" sizes="(max-width: 1195px) 100vw, 1195px" /><br />
<img loading="lazy" decoding="async" width="948" height="560" src="/wp-content/uploads/2018/05/word-image-3802.png" class="wp-image-4264" srcset="/wp-content/uploads/2018/05/word-image-3802.png 948w, /wp-content/uploads/2018/05/word-image-3802-300x177.png 300w, /wp-content/uploads/2018/05/word-image-3802-768x454.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  查看应用列表
</p>
<p><img loading="lazy" decoding="async" width="1012" height="451" src="/wp-content/uploads/2018/05/word-image-3803.png" class="wp-image-4265" srcset="/wp-content/uploads/2018/05/word-image-3803.png 1012w, /wp-content/uploads/2018/05/word-image-3803-300x134.png 300w, /wp-content/uploads/2018/05/word-image-3803-768x342.png 768w" sizes="(max-width: 1012px) 100vw, 1012px" /><br />
<img loading="lazy" decoding="async" width="856" height="565" src="/wp-content/uploads/2018/05/word-image-3804.png" class="wp-image-4266" srcset="/wp-content/uploads/2018/05/word-image-3804.png 856w, /wp-content/uploads/2018/05/word-image-3804-300x198.png 300w, /wp-content/uploads/2018/05/word-image-3804-768x507.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></p>
<p>
  ④查看模板列表
</p>
<p><img loading="lazy" decoding="async" width="1126" height="537" src="/wp-content/uploads/2018/05/word-image-3805.png" class="wp-image-4267" srcset="/wp-content/uploads/2018/05/word-image-3805.png 1126w, /wp-content/uploads/2018/05/word-image-3805-300x143.png 300w, /wp-content/uploads/2018/05/word-image-3805-768x366.png 768w, /wp-content/uploads/2018/05/word-image-3805-1024x488.png 1024w" sizes="(max-width: 1126px) 100vw, 1126px" /></p>
<p>
  ⑤设置测试号码
</p>
<p><img loading="lazy" decoding="async" width="1110" height="555" src="/wp-content/uploads/2018/05/word-image-3806.png" class="wp-image-4268" srcset="/wp-content/uploads/2018/05/word-image-3806.png 1110w, /wp-content/uploads/2018/05/word-image-3806-300x150.png 300w, /wp-content/uploads/2018/05/word-image-3806-768x384.png 768w, /wp-content/uploads/2018/05/word-image-3806-1024x512.png 1024w" sizes="(max-width: 1110px) 100vw, 1110px" /></p>
<h2>查看使用文档或者找demo</h2>
<p>
  ①找到文档入口地址
</p>
<p><img loading="lazy" decoding="async" width="1317" height="159" src="/wp-content/uploads/2018/05/word-image-3807.png" class="wp-image-4269" srcset="/wp-content/uploads/2018/05/word-image-3807.png 1317w, /wp-content/uploads/2018/05/word-image-3807-300x36.png 300w, /wp-content/uploads/2018/05/word-image-3807-768x93.png 768w, /wp-content/uploads/2018/05/word-image-3807-1024x124.png 1024w" sizes="(max-width: 1317px) 100vw, 1317px" /></p>
<p>
  ②找到短信文档的入口
</p>
<p><img loading="lazy" decoding="async" width="1076" height="439" src="/wp-content/uploads/2018/05/word-image-3808.png" class="wp-image-4270" srcset="/wp-content/uploads/2018/05/word-image-3808.png 1076w, /wp-content/uploads/2018/05/word-image-3808-300x122.png 300w, /wp-content/uploads/2018/05/word-image-3808-768x313.png 768w, /wp-content/uploads/2018/05/word-image-3808-1024x418.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /></p>
<p>
  ③下载demo
</p>
<p><img loading="lazy" decoding="async" width="950" height="509" src="/wp-content/uploads/2018/05/word-image-3809.png" class="wp-image-4271" srcset="/wp-content/uploads/2018/05/word-image-3809.png 950w, /wp-content/uploads/2018/05/word-image-3809-300x161.png 300w, /wp-content/uploads/2018/05/word-image-3809-768x411.png 768w" sizes="(max-width: 950px) 100vw, 950px" /></p>
<p>
  ④目录说明
</p>
<p><img loading="lazy" decoding="async" width="891" height="263" src="/wp-content/uploads/2018/05/word-image-3810.png" class="wp-image-4272" srcset="/wp-content/uploads/2018/05/word-image-3810.png 891w, /wp-content/uploads/2018/05/word-image-3810-300x89.png 300w, /wp-content/uploads/2018/05/word-image-3810-768x227.png 768w" sizes="(max-width: 891px) 100vw, 891px" /></p>
<h2>测试短信发送</h2>
<p>
  ①将下载的demo拷贝到web目录下
</p>
<p><img loading="lazy" decoding="async" width="936" height="389" src="/wp-content/uploads/2018/05/word-image-3811.png" class="wp-image-4273" srcset="/wp-content/uploads/2018/05/word-image-3811.png 936w, /wp-content/uploads/2018/05/word-image-3811-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3811-768x319.png 768w" sizes="(max-width: 936px) 100vw, 936px" /></p>
<p>
  ②修改发送短信的文件
</p>
<p><img loading="lazy" decoding="async" width="1138" height="674" src="/wp-content/uploads/2018/05/word-image-3812.png" class="wp-image-4274" srcset="/wp-content/uploads/2018/05/word-image-3812.png 1138w, /wp-content/uploads/2018/05/word-image-3812-300x178.png 300w, /wp-content/uploads/2018/05/word-image-3812-768x455.png 768w, /wp-content/uploads/2018/05/word-image-3812-1024x606.png 1024w" sizes="(max-width: 1138px) 100vw, 1138px" /></p>
<p>
  ③继续修改发送短信文件实现发送短信
</p>
<p><img loading="lazy" decoding="async" width="1051" height="496" src="/wp-content/uploads/2018/05/word-image-3813.png" class="wp-image-4275" srcset="/wp-content/uploads/2018/05/word-image-3813.png 1051w, /wp-content/uploads/2018/05/word-image-3813-300x142.png 300w, /wp-content/uploads/2018/05/word-image-3813-768x362.png 768w, /wp-content/uploads/2018/05/word-image-3813-1024x483.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" /></p>
<p>
  ④测试查看
</p>
<p><img loading="lazy" decoding="async" width="750" height="236" src="/wp-content/uploads/2018/05/word-image-3814.png" class="wp-image-4276" srcset="/wp-content/uploads/2018/05/word-image-3814.png 750w, /wp-content/uploads/2018/05/word-image-3814-300x94.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<h2>短信注册的流程</h2>
<p><img loading="lazy" decoding="async" width="1066" height="452" src="/wp-content/uploads/2018/05/word-image-3815.png" class="wp-image-4277" srcset="/wp-content/uploads/2018/05/word-image-3815.png 1066w, /wp-content/uploads/2018/05/word-image-3815-300x127.png 300w, /wp-content/uploads/2018/05/word-image-3815-768x326.png 768w, /wp-content/uploads/2018/05/word-image-3815-1024x434.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /></p>
<h2>项目中实现短信注册</h2>
<h3>将发送短信封装成为函数</h3>
<p>
  ①拷贝SDK类文件
</p>
<p><img loading="lazy" decoding="async" width="915" height="337" src="/wp-content/uploads/2018/05/word-image-3816.png" class="wp-image-4278" srcset="/wp-content/uploads/2018/05/word-image-3816.png 915w, /wp-content/uploads/2018/05/word-image-3816-300x110.png 300w, /wp-content/uploads/2018/05/word-image-3816-768x283.png 768w" sizes="(max-width: 915px) 100vw, 915px" /></p>
<p>
  ②创建发送短信的函数
</p>
<p><img loading="lazy" decoding="async" width="1068" height="671" src="/wp-content/uploads/2018/05/word-image-3817.png" class="wp-image-4279" srcset="/wp-content/uploads/2018/05/word-image-3817.png 1068w, /wp-content/uploads/2018/05/word-image-3817-300x188.png 300w, /wp-content/uploads/2018/05/word-image-3817-768x483.png 768w, /wp-content/uploads/2018/05/word-image-3817-1024x643.png 1024w" sizes="(max-width: 1068px) 100vw, 1068px" /><br />
<img loading="lazy" decoding="async" width="1077" height="500" src="/wp-content/uploads/2018/05/word-image-3818.png" class="wp-image-4280" srcset="/wp-content/uploads/2018/05/word-image-3818.png 1077w, /wp-content/uploads/2018/05/word-image-3818-300x139.png 300w, /wp-content/uploads/2018/05/word-image-3818-768x357.png 768w, /wp-content/uploads/2018/05/word-image-3818-1024x475.png 1024w" sizes="(max-width: 1077px) 100vw, 1077px" /><br />
<img loading="lazy" decoding="async" width="1026" height="170" src="/wp-content/uploads/2018/05/word-image-3819.png" class="wp-image-4281" srcset="/wp-content/uploads/2018/05/word-image-3819.png 1026w, /wp-content/uploads/2018/05/word-image-3819-300x50.png 300w, /wp-content/uploads/2018/05/word-image-3819-768x127.png 768w, /wp-content/uploads/2018/05/word-image-3819-1024x170.png 1024w" sizes="(max-width: 1026px) 100vw, 1026px" /></p>
<p>
  ③编写测试代码
</p>
<p><img loading="lazy" decoding="async" width="1083" height="395" src="/wp-content/uploads/2018/05/word-image-3820.png" class="wp-image-4282" srcset="/wp-content/uploads/2018/05/word-image-3820.png 1083w, /wp-content/uploads/2018/05/word-image-3820-300x109.png 300w, /wp-content/uploads/2018/05/word-image-3820-768x280.png 768w, /wp-content/uploads/2018/05/word-image-3820-1024x373.png 1024w" sizes="(max-width: 1083px) 100vw, 1083px" /><br />
<img loading="lazy" decoding="async" width="583" height="167" src="/wp-content/uploads/2018/05/word-image-3821.png" class="wp-image-4283" srcset="/wp-content/uploads/2018/05/word-image-3821.png 583w, /wp-content/uploads/2018/05/word-image-3821-300x86.png 300w" sizes="(max-width: 583px) 100vw, 583px" /></p>
<h3>正式使用短信验证码注册</h3>
<p>
  ①修改注册表单
</p>
<p><img loading="lazy" decoding="async" width="1128" height="700" src="/wp-content/uploads/2018/05/word-image-3822.png" class="wp-image-4284" srcset="/wp-content/uploads/2018/05/word-image-3822.png 1128w, /wp-content/uploads/2018/05/word-image-3822-300x186.png 300w, /wp-content/uploads/2018/05/word-image-3822-768x477.png 768w, /wp-content/uploads/2018/05/word-image-3822-1024x635.png 1024w" sizes="(max-width: 1128px) 100vw, 1128px" /></p>
<p>
  ②绑定点击事件触发ajax
</p>
<p><img loading="lazy" decoding="async" width="924" height="676" src="/wp-content/uploads/2018/05/word-image-3823.png" class="wp-image-4285" srcset="/wp-content/uploads/2018/05/word-image-3823.png 924w, /wp-content/uploads/2018/05/word-image-3823-300x219.png 300w, /wp-content/uploads/2018/05/word-image-3823-768x562.png 768w" sizes="(max-width: 924px) 100vw, 924px" /></p>
<p>
  ③创建方法实现请求接口发送短信
</p>
<p><img loading="lazy" decoding="async" width="1090" height="673" src="/wp-content/uploads/2018/05/word-image-3824.png" class="wp-image-4286" srcset="/wp-content/uploads/2018/05/word-image-3824.png 1090w, /wp-content/uploads/2018/05/word-image-3824-300x185.png 300w, /wp-content/uploads/2018/05/word-image-3824-768x474.png 768w, /wp-content/uploads/2018/05/word-image-3824-1024x632.png 1024w" sizes="(max-width: 1090px) 100vw, 1090px" /><br />
<img loading="lazy" decoding="async" width="1048" height="343" src="/wp-content/uploads/2018/05/word-image-3825.png" class="wp-image-4287" srcset="/wp-content/uploads/2018/05/word-image-3825.png 1048w, /wp-content/uploads/2018/05/word-image-3825-300x98.png 300w, /wp-content/uploads/2018/05/word-image-3825-768x251.png 768w, /wp-content/uploads/2018/05/word-image-3825-1024x335.png 1024w" sizes="(max-width: 1048px) 100vw, 1048px" /></p>
<p>
  ④查看session中的内容
</p>
<p><img loading="lazy" decoding="async" width="881" height="334" src="/wp-content/uploads/2018/05/word-image-3826.png" class="wp-image-4288" srcset="/wp-content/uploads/2018/05/word-image-3826.png 881w, /wp-content/uploads/2018/05/word-image-3826-300x114.png 300w, /wp-content/uploads/2018/05/word-image-3826-768x291.png 768w" sizes="(max-width: 881px) 100vw, 881px" /><br />
<img loading="lazy" decoding="async" width="521" height="200" src="/wp-content/uploads/2018/05/word-image-3827.png" class="wp-image-4289" srcset="/wp-content/uploads/2018/05/word-image-3827.png 521w, /wp-content/uploads/2018/05/word-image-3827-300x115.png 300w" sizes="(max-width: 521px) 100vw, 521px" /></p>
<p>
  ⑤实现倒计时效果
</p>
<p><img loading="lazy" decoding="async" width="1066" height="707" src="/wp-content/uploads/2018/05/word-image-3828.png" class="wp-image-4290" srcset="/wp-content/uploads/2018/05/word-image-3828.png 1066w, /wp-content/uploads/2018/05/word-image-3828-300x199.png 300w, /wp-content/uploads/2018/05/word-image-3828-768x509.png 768w, /wp-content/uploads/2018/05/word-image-3828-1024x679.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /><br />
<img loading="lazy" decoding="async" width="788" height="408" src="/wp-content/uploads/2018/05/word-image-3829.png" class="wp-image-4291" srcset="/wp-content/uploads/2018/05/word-image-3829.png 788w, /wp-content/uploads/2018/05/word-image-3829-300x155.png 300w, /wp-content/uploads/2018/05/word-image-3829-768x398.png 768w" sizes="(max-width: 788px) 100vw, 788px" /></p>
<h2>手机短信注册入库</h2>
<p>
  ①修改表结构
</p>
<p><img loading="lazy" decoding="async" width="783" height="386" src="/wp-content/uploads/2018/05/word-image-3830.png" class="wp-image-4292" srcset="/wp-content/uploads/2018/05/word-image-3830.png 783w, /wp-content/uploads/2018/05/word-image-3830-300x148.png 300w, /wp-content/uploads/2018/05/word-image-3830-768x379.png 768w" sizes="(max-width: 783px) 100vw, 783px" /></p>
<p>
  ②修改自定义模型中字段
</p>
<p><img loading="lazy" decoding="async" width="1018" height="429" src="/wp-content/uploads/2018/05/word-image-3831.png" class="wp-image-4293" srcset="/wp-content/uploads/2018/05/word-image-3831.png 1018w, /wp-content/uploads/2018/05/word-image-3831-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3831-768x324.png 768w" sizes="(max-width: 1018px) 100vw, 1018px" /></p>
<p>
  ③实现注册入库
</p>
<p><img loading="lazy" decoding="async" width="1076" height="613" src="/wp-content/uploads/2018/05/word-image-3832.png" class="wp-image-4294" srcset="/wp-content/uploads/2018/05/word-image-3832.png 1076w, /wp-content/uploads/2018/05/word-image-3832-300x171.png 300w, /wp-content/uploads/2018/05/word-image-3832-768x438.png 768w, /wp-content/uploads/2018/05/word-image-3832-1024x583.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /><br />
<img loading="lazy" decoding="async" width="1066" height="492" src="/wp-content/uploads/2018/05/word-image-3833.png" class="wp-image-4295" srcset="/wp-content/uploads/2018/05/word-image-3833.png 1066w, /wp-content/uploads/2018/05/word-image-3833-300x138.png 300w, /wp-content/uploads/2018/05/word-image-3833-768x354.png 768w, /wp-content/uploads/2018/05/word-image-3833-1024x473.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /></p>
<p>
  注册后查看数据
</p>
<p><img loading="lazy" decoding="async" width="847" height="317" src="/wp-content/uploads/2018/05/word-image-3834.png" class="wp-image-4296" srcset="/wp-content/uploads/2018/05/word-image-3834.png 847w, /wp-content/uploads/2018/05/word-image-3834-300x112.png 300w, /wp-content/uploads/2018/05/word-image-3834-768x287.png 768w" sizes="(max-width: 847px) 100vw, 847px" /></p>
<h1>购物车下单</h1>
<h2>3.1、显示结算页</h2>
<p>
  ①修改购物车中的结算连接
</p>
<p><img loading="lazy" decoding="async" width="1071" height="487" src="/wp-content/uploads/2018/05/word-image-3835.png" class="wp-image-4297" srcset="/wp-content/uploads/2018/05/word-image-3835.png 1071w, /wp-content/uploads/2018/05/word-image-3835-300x136.png 300w, /wp-content/uploads/2018/05/word-image-3835-768x349.png 768w, /wp-content/uploads/2018/05/word-image-3835-1024x466.png 1024w" sizes="(max-width: 1071px) 100vw, 1071px" /></p>
<p>
  ②创建方法校验是否登录
</p>
<p><img loading="lazy" decoding="async" width="984" height="585" src="/wp-content/uploads/2018/05/word-image-3836.png" class="wp-image-4298" srcset="/wp-content/uploads/2018/05/word-image-3836.png 984w, /wp-content/uploads/2018/05/word-image-3836-300x178.png 300w, /wp-content/uploads/2018/05/word-image-3836-768x457.png 768w" sizes="(max-width: 984px) 100vw, 984px" /></p>
<p>
  ③创建Order控制器方法
</p>
<p><img loading="lazy" decoding="async" width="980" height="611" src="/wp-content/uploads/2018/05/word-image-3837.png" class="wp-image-4299" srcset="/wp-content/uploads/2018/05/word-image-3837.png 980w, /wp-content/uploads/2018/05/word-image-3837-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3837-768x479.png 768w" sizes="(max-width: 980px) 100vw, 980px" /></p>
<p>
  ④处理模板显示数据
</p>
<p><img loading="lazy" decoding="async" width="1087" height="695" src="/wp-content/uploads/2018/05/word-image-3838.png" class="wp-image-4300" srcset="/wp-content/uploads/2018/05/word-image-3838.png 1087w, /wp-content/uploads/2018/05/word-image-3838-300x192.png 300w, /wp-content/uploads/2018/05/word-image-3838-768x491.png 768w, /wp-content/uploads/2018/05/word-image-3838-1024x655.png 1024w" sizes="(max-width: 1087px) 100vw, 1087px" /><br />
<img loading="lazy" decoding="async" width="1263" height="665" src="/wp-content/uploads/2018/05/word-image-3839.png" class="wp-image-4301" srcset="/wp-content/uploads/2018/05/word-image-3839.png 1263w, /wp-content/uploads/2018/05/word-image-3839-300x158.png 300w, /wp-content/uploads/2018/05/word-image-3839-768x404.png 768w, /wp-content/uploads/2018/05/word-image-3839-1024x539.png 1024w" sizes="(max-width: 1263px) 100vw, 1263px" /></p>
<h2>3.2、结算下单</h2>
<h3>3.2.1、数据表创建</h3>
<p>
  ①创建订单总表
</p>
<p>
  CREATE TABLE `shop_order` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `user_id` int(11) NOT NULL DEFAULT &#8216;0&#8217;,
</p>
<p>
    `tel` char(11) NOT NULL DEFAULT &#8221; COMMENT &#8216;联系电话&#8217;,
</p>
<p>
    `address` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;收货人地址&#8217;,
</p>
<p>
    `shr` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;收货人&#8217;,
</p>
<p>
    `total_price` decimal(10,2) NOT NULL DEFAULT &#8216;0.00&#8217; COMMENT &#8216;总价格&#8217;,
</p>
<p>
    `addtime` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;下单时间&#8217;,
</p>
<p>
    `com` char(10) NOT NULL DEFAULT &#8221; COMMENT &#8216;快递公司的编号&#8217;,
</p>
<p>
    `no` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;快递的运单号&#8217;,
</p>
<p>
    `status` tinyint(4) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;订单的状态 0表示下单  1已支付 2、已发货&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<p>
  ②创建订单详情表
</p>
<p>
  CREATE TABLE `shop_order_detail` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `order_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;订单ID对应order表中的ID字段&#8217;,
</p>
<p>
    `goods_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;商品ID&#8217;,
</p>
<p>
    `goods_attr_id` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;商品属性值的ID组合&#8217;,
</p>
<p>
    `goods_count` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;购买的数量&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h3>3.2.2、实现订单的入口</h3>
<p>
  ①修改表单提交
</p>
<p>
  处理提交的地址
</p>
<p><img loading="lazy" decoding="async" width="1061" height="388" src="/wp-content/uploads/2018/05/word-image-3840.png" class="wp-image-4302" srcset="/wp-content/uploads/2018/05/word-image-3840.png 1061w, /wp-content/uploads/2018/05/word-image-3840-300x110.png 300w, /wp-content/uploads/2018/05/word-image-3840-768x281.png 768w, /wp-content/uploads/2018/05/word-image-3840-1024x374.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /></p>
<p>
  设置为表单提交
</p>
<p><img loading="lazy" decoding="async" width="1120" height="702" src="/wp-content/uploads/2018/05/word-image-3841.png" class="wp-image-4303" srcset="/wp-content/uploads/2018/05/word-image-3841.png 1120w, /wp-content/uploads/2018/05/word-image-3841-300x188.png 300w, /wp-content/uploads/2018/05/word-image-3841-768x481.png 768w, /wp-content/uploads/2018/05/word-image-3841-1024x642.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" /></p>
<p>
  ②创建方法实现订单数据入库功能
</p>
<p><img loading="lazy" decoding="async" width="910" height="613" src="/wp-content/uploads/2018/05/word-image-3842.png" class="wp-image-4304" srcset="/wp-content/uploads/2018/05/word-image-3842.png 910w, /wp-content/uploads/2018/05/word-image-3842-300x202.png 300w, /wp-content/uploads/2018/05/word-image-3842-768x517.png 768w" sizes="(max-width: 910px) 100vw, 910px" /></p>
<p>
  ③创建模型方法
</p>
<p><img loading="lazy" decoding="async" width="1092" height="679" src="/wp-content/uploads/2018/05/word-image-3843.png" class="wp-image-4305" srcset="/wp-content/uploads/2018/05/word-image-3843.png 1092w, /wp-content/uploads/2018/05/word-image-3843-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3843-768x478.png 768w, /wp-content/uploads/2018/05/word-image-3843-1024x637.png 1024w" sizes="(max-width: 1092px) 100vw, 1092px" /><br />
<img loading="lazy" decoding="async" width="1065" height="547" src="/wp-content/uploads/2018/05/word-image-3844.png" class="wp-image-4306" srcset="/wp-content/uploads/2018/05/word-image-3844.png 1065w, /wp-content/uploads/2018/05/word-image-3844-300x154.png 300w, /wp-content/uploads/2018/05/word-image-3844-768x394.png 768w, /wp-content/uploads/2018/05/word-image-3844-1024x526.png 1024w" sizes="(max-width: 1065px) 100vw, 1065px" /><br />
<img loading="lazy" decoding="async" width="1079" height="267" src="/wp-content/uploads/2018/05/word-image-3845.png" class="wp-image-4307" srcset="/wp-content/uploads/2018/05/word-image-3845.png 1079w, /wp-content/uploads/2018/05/word-image-3845-300x74.png 300w, /wp-content/uploads/2018/05/word-image-3845-768x190.png 768w, /wp-content/uploads/2018/05/word-image-3845-1024x253.png 1024w" sizes="(max-width: 1079px) 100vw, 1079px" /></p>
<h1>面向接口编程</h1>
<h2>面向接口编程介绍</h2>
<p>
  当有多个子项目存在时，如果有业务逻辑需要修改，对应的每个子项目都需要进行代码的修改。此方式就会比较麻烦。考虑项目的扩展性。可以对每一个子项目按照MVC值保留 V与C。一旦涉及到数据操作。全部通过调用接口实现。对于接口组合到一起就是API项目
</p>
<p><img loading="lazy" decoding="async" width="840" height="452" src="/wp-content/uploads/2018/05/word-image-3846.png" class="wp-image-4308" srcset="/wp-content/uploads/2018/05/word-image-3846.png 840w, /wp-content/uploads/2018/05/word-image-3846-300x161.png 300w, /wp-content/uploads/2018/05/word-image-3846-768x413.png 768w" sizes="(max-width: 840px) 100vw, 840px" /></p>
<h2>接口项目部署</h2>
<p>
  ①下载TP5的源码
</p>
<p><img loading="lazy" decoding="async" width="910" height="507" src="/wp-content/uploads/2018/05/word-image-3847.png" class="wp-image-4309" srcset="/wp-content/uploads/2018/05/word-image-3847.png 910w, /wp-content/uploads/2018/05/word-image-3847-300x167.png 300w, /wp-content/uploads/2018/05/word-image-3847-768x428.png 768w" sizes="(max-width: 910px) 100vw, 910px" /></p>
<p>
  ②拷贝TP源码到项目目录下
</p>
<p><img loading="lazy" decoding="async" width="1043" height="507" src="/wp-content/uploads/2018/05/word-image-3848.png" class="wp-image-4310" srcset="/wp-content/uploads/2018/05/word-image-3848.png 1043w, /wp-content/uploads/2018/05/word-image-3848-300x146.png 300w, /wp-content/uploads/2018/05/word-image-3848-768x373.png 768w, /wp-content/uploads/2018/05/word-image-3848-1024x498.png 1024w" sizes="(max-width: 1043px) 100vw, 1043px" /></p>
<p>
  ③配置虚拟主机
</p>
<p><img loading="lazy" decoding="async" width="899" height="480" src="/wp-content/uploads/2018/05/word-image-3849.png" class="wp-image-4311" srcset="/wp-content/uploads/2018/05/word-image-3849.png 899w, /wp-content/uploads/2018/05/word-image-3849-300x160.png 300w, /wp-content/uploads/2018/05/word-image-3849-768x410.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></p>
<p>
  ③设置host文件
</p>
<p><img loading="lazy" decoding="async" width="560" height="448" src="/wp-content/uploads/2018/05/word-image-3850.png" class="wp-image-4312" srcset="/wp-content/uploads/2018/05/word-image-3850.png 560w, /wp-content/uploads/2018/05/word-image-3850-300x240.png 300w" sizes="(max-width: 560px) 100vw, 560px" /></p>
<p>
  ④重启Apache访问测试
</p>
<p><img loading="lazy" decoding="async" width="960" height="496" src="/wp-content/uploads/2018/05/word-image-3851.png" class="wp-image-4313" srcset="/wp-content/uploads/2018/05/word-image-3851.png 960w, /wp-content/uploads/2018/05/word-image-3851-300x155.png 300w, /wp-content/uploads/2018/05/word-image-3851-768x397.png 768w" sizes="(max-width: 960px) 100vw, 960px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4240.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>TP3.2商城 （八）支付宝、邮件、QQ</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4136.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4136.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 12:22:22 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[QQ]]></category>
		<category><![CDATA[支付宝]]></category>
		<category><![CDATA[邮件]]></category>
		<guid isPermaLink="false">/?p=4136</guid>

					<description><![CDATA[支付宝 支付宝接口申请(了解) ①进入支付宝首页 ②点击企业进入蚂蚁金服 ③开始接入 ④使用企业账户进行登录  [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>支付宝</h1>
<h2>支付宝接口申请(了解)</h2>
<p>
  ①进入支付宝首页
</p>
<p><img loading="lazy" decoding="async" width="1133" height="264" src="/wp-content/uploads/2018/05/word-image-3678.png" class="wp-image-4137" srcset="/wp-content/uploads/2018/05/word-image-3678.png 1133w, /wp-content/uploads/2018/05/word-image-3678-300x70.png 300w, /wp-content/uploads/2018/05/word-image-3678-768x179.png 768w, /wp-content/uploads/2018/05/word-image-3678-1024x239.png 1024w" sizes="(max-width: 1133px) 100vw, 1133px" /></p>
<p>
  ②点击企业进入蚂蚁金服
</p>
<p><img loading="lazy" decoding="async" width="1286" height="491" src="/wp-content/uploads/2018/05/word-image-3679.png" class="wp-image-4138" srcset="/wp-content/uploads/2018/05/word-image-3679.png 1286w, /wp-content/uploads/2018/05/word-image-3679-300x115.png 300w, /wp-content/uploads/2018/05/word-image-3679-768x293.png 768w, /wp-content/uploads/2018/05/word-image-3679-1024x391.png 1024w" sizes="(max-width: 1286px) 100vw, 1286px" /></p>
<p>
  ③开始接入
</p>
<p><img loading="lazy" decoding="async" width="1015" height="475" src="/wp-content/uploads/2018/05/word-image-3680.png" class="wp-image-4139" srcset="/wp-content/uploads/2018/05/word-image-3680.png 1015w, /wp-content/uploads/2018/05/word-image-3680-300x140.png 300w, /wp-content/uploads/2018/05/word-image-3680-768x359.png 768w" sizes="(max-width: 1015px) 100vw, 1015px" /></p>
<p>
  ④使用企业账户进行登录
</p>
<p><img loading="lazy" decoding="async" width="1137" height="671" src="/wp-content/uploads/2018/05/word-image-3681.png" class="wp-image-4140" srcset="/wp-content/uploads/2018/05/word-image-3681.png 1137w, /wp-content/uploads/2018/05/word-image-3681-300x177.png 300w, /wp-content/uploads/2018/05/word-image-3681-768x453.png 768w, /wp-content/uploads/2018/05/word-image-3681-1024x604.png 1024w" sizes="(max-width: 1137px) 100vw, 1137px" /></p>
<h2>文档说明</h2>
<p>
  ①进入开放平台
</p>
<p><img loading="lazy" decoding="async" width="1313" height="236" src="/wp-content/uploads/2018/05/word-image-3682.png" class="wp-image-4141" srcset="/wp-content/uploads/2018/05/word-image-3682.png 1313w, /wp-content/uploads/2018/05/word-image-3682-300x54.png 300w, /wp-content/uploads/2018/05/word-image-3682-768x138.png 768w, /wp-content/uploads/2018/05/word-image-3682-1024x184.png 1024w" sizes="(max-width: 1313px) 100vw, 1313px" /></p>
<p>
  ②进入文档中心
</p>
<p><img loading="lazy" decoding="async" width="1337" height="505" src="/wp-content/uploads/2018/05/word-image-3683.png" class="wp-image-4142" srcset="/wp-content/uploads/2018/05/word-image-3683.png 1337w, /wp-content/uploads/2018/05/word-image-3683-300x113.png 300w, /wp-content/uploads/2018/05/word-image-3683-768x290.png 768w, /wp-content/uploads/2018/05/word-image-3683-1024x387.png 1024w" sizes="(max-width: 1337px) 100vw, 1337px" /></p>
<p>
  ③进入电脑网站支付文档
</p>
<p><img loading="lazy" decoding="async" width="1291" height="343" src="/wp-content/uploads/2018/05/word-image-3684.png" class="wp-image-4143" srcset="/wp-content/uploads/2018/05/word-image-3684.png 1291w, /wp-content/uploads/2018/05/word-image-3684-300x80.png 300w, /wp-content/uploads/2018/05/word-image-3684-768x204.png 768w, /wp-content/uploads/2018/05/word-image-3684-1024x272.png 1024w" sizes="(max-width: 1291px) 100vw, 1291px" /></p>
<p>
  ④在文档中找到demo
</p>
<p><img loading="lazy" decoding="async" width="1196" height="498" src="/wp-content/uploads/2018/05/word-image-3685.png" class="wp-image-4144" srcset="/wp-content/uploads/2018/05/word-image-3685.png 1196w, /wp-content/uploads/2018/05/word-image-3685-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3685-768x320.png 768w, /wp-content/uploads/2018/05/word-image-3685-1024x426.png 1024w" sizes="(max-width: 1196px) 100vw, 1196px" /></p>
<p>
  ⑤查看下载代码的目录
</p>
<p><img loading="lazy" decoding="async" width="1034" height="457" src="/wp-content/uploads/2018/05/word-image-3686.png" class="wp-image-4145" srcset="/wp-content/uploads/2018/05/word-image-3686.png 1034w, /wp-content/uploads/2018/05/word-image-3686-300x133.png 300w, /wp-content/uploads/2018/05/word-image-3686-768x339.png 768w, /wp-content/uploads/2018/05/word-image-3686-1024x453.png 1024w" sizes="(max-width: 1034px) 100vw, 1034px" /></p>
<h2>接入测试支付</h2>
<h3>1.3.1、申请成为开发者</h3>
<p>
  由于个人不能使用支付宝收款接口。需要使用自己的个人账户成为开发者。开发者有默认到的测试应用可以进行开发
</p>
<p>
  ①申请成为开发者
</p>
<p><a href="https://open.alipay.com/platform/homeRoleSelection.htm">https://open.alipay.com/platform/homeRoleSelection.htm</a>
</p>
<p><img loading="lazy" decoding="async" width="1291" height="646" src="/wp-content/uploads/2018/05/word-image-3687.png" class="wp-image-4146" srcset="/wp-content/uploads/2018/05/word-image-3687.png 1291w, /wp-content/uploads/2018/05/word-image-3687-300x150.png 300w, /wp-content/uploads/2018/05/word-image-3687-768x384.png 768w, /wp-content/uploads/2018/05/word-image-3687-1024x512.png 1024w" sizes="(max-width: 1291px) 100vw, 1291px" /></p>
<p>
  ②进入管理中心
</p>
<p><img loading="lazy" decoding="async" width="1318" height="198" src="/wp-content/uploads/2018/05/word-image-3688.png" class="wp-image-4147" srcset="/wp-content/uploads/2018/05/word-image-3688.png 1318w, /wp-content/uploads/2018/05/word-image-3688-300x45.png 300w, /wp-content/uploads/2018/05/word-image-3688-768x115.png 768w, /wp-content/uploads/2018/05/word-image-3688-1024x154.png 1024w" sizes="(max-width: 1318px) 100vw, 1318px" /></p>
<p>
  外观如下
</p>
<p><img loading="lazy" decoding="async" width="1168" height="617" src="/wp-content/uploads/2018/05/word-image-3689.png" class="wp-image-4148" srcset="/wp-content/uploads/2018/05/word-image-3689.png 1168w, /wp-content/uploads/2018/05/word-image-3689-300x158.png 300w, /wp-content/uploads/2018/05/word-image-3689-768x406.png 768w, /wp-content/uploads/2018/05/word-image-3689-1024x541.png 1024w" sizes="(max-width: 1168px) 100vw, 1168px" /></p>
<p>
  ③进入研发服务
</p>
<p><img loading="lazy" decoding="async" width="894" height="256" src="/wp-content/uploads/2018/05/word-image-3690.png" class="wp-image-4149" srcset="/wp-content/uploads/2018/05/word-image-3690.png 894w, /wp-content/uploads/2018/05/word-image-3690-300x86.png 300w, /wp-content/uploads/2018/05/word-image-3690-768x220.png 768w" sizes="(max-width: 894px) 100vw, 894px" /></p>
<p>
  进入到研发服务界面
</p>
<p><img loading="lazy" decoding="async" width="1116" height="414" src="/wp-content/uploads/2018/05/word-image-3691.png" class="wp-image-4150" srcset="/wp-content/uploads/2018/05/word-image-3691.png 1116w, /wp-content/uploads/2018/05/word-image-3691-300x111.png 300w, /wp-content/uploads/2018/05/word-image-3691-768x285.png 768w, /wp-content/uploads/2018/05/word-image-3691-1024x380.png 1024w" sizes="(max-width: 1116px) 100vw, 1116px" /></p>
<p>
  ④查看沙箱的APPId
</p>
<p><img loading="lazy" decoding="async" width="841" height="200" src="/wp-content/uploads/2018/05/word-image-3692.png" class="wp-image-4151" srcset="/wp-content/uploads/2018/05/word-image-3692.png 841w, /wp-content/uploads/2018/05/word-image-3692-300x71.png 300w, /wp-content/uploads/2018/05/word-image-3692-768x183.png 768w" sizes="(max-width: 841px) 100vw, 841px" /></p>
<h3>1.3.2、设置密钥</h3>
<p>
  ①先设置密钥
</p>
<p><img loading="lazy" decoding="async" width="795" height="252" src="/wp-content/uploads/2018/05/word-image-3693.png" class="wp-image-4152" srcset="/wp-content/uploads/2018/05/word-image-3693.png 795w, /wp-content/uploads/2018/05/word-image-3693-300x95.png 300w, /wp-content/uploads/2018/05/word-image-3693-768x243.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></p>
<p>
  界面如下
</p>
<p><img loading="lazy" decoding="async" width="793" height="417" src="/wp-content/uploads/2018/05/word-image-3694.png" class="wp-image-4153" srcset="/wp-content/uploads/2018/05/word-image-3694.png 793w, /wp-content/uploads/2018/05/word-image-3694-300x158.png 300w, /wp-content/uploads/2018/05/word-image-3694-768x404.png 768w" sizes="(max-width: 793px) 100vw, 793px" /></p>
<p>
  ②查看密钥的设置方式
</p>
<p>
  可以点击密钥生成方法查看如何填写密钥信息地址：<a href="https://docs.open.alipay.com/291/105971">https://docs.open.alipay.com/291/105971</a>
</p>
<p><img loading="lazy" decoding="async" width="910" height="482" src="/wp-content/uploads/2018/05/word-image-3695.png" class="wp-image-4154" srcset="/wp-content/uploads/2018/05/word-image-3695.png 910w, /wp-content/uploads/2018/05/word-image-3695-300x159.png 300w, /wp-content/uploads/2018/05/word-image-3695-768x407.png 768w" sizes="(max-width: 910px) 100vw, 910px" /></p>
<p>
  ③使用下载的工具生成密钥
</p>
<p><img loading="lazy" decoding="async" width="1286" height="732" src="/wp-content/uploads/2018/05/word-image-3696.png" class="wp-image-4155" srcset="/wp-content/uploads/2018/05/word-image-3696.png 1286w, /wp-content/uploads/2018/05/word-image-3696-300x171.png 300w, /wp-content/uploads/2018/05/word-image-3696-768x437.png 768w, /wp-content/uploads/2018/05/word-image-3696-1024x583.png 1024w" sizes="(max-width: 1286px) 100vw, 1286px" /></p>
<p>
  ④使用生成的密钥设置
</p>
<p><img loading="lazy" decoding="async" width="800" height="400" src="/wp-content/uploads/2018/05/word-image-3697.png" class="wp-image-4156" srcset="/wp-content/uploads/2018/05/word-image-3697.png 800w, /wp-content/uploads/2018/05/word-image-3697-300x150.png 300w, /wp-content/uploads/2018/05/word-image-3697-768x384.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<h3>1.3.3、本地测试支付</h3>
<p>
  ①拷贝下载的demo到web目录下
</p>
<p><img loading="lazy" decoding="async" width="954" height="437" src="/wp-content/uploads/2018/05/word-image-3698.png" class="wp-image-4157" srcset="/wp-content/uploads/2018/05/word-image-3698.png 954w, /wp-content/uploads/2018/05/word-image-3698-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3698-768x352.png 768w" sizes="(max-width: 954px) 100vw, 954px" /></p>
<p>
  ②修改配置文件
</p>
<p><img loading="lazy" decoding="async" width="1064" height="691" src="/wp-content/uploads/2018/05/word-image-3699.png" class="wp-image-4158" srcset="/wp-content/uploads/2018/05/word-image-3699.png 1064w, /wp-content/uploads/2018/05/word-image-3699-300x195.png 300w, /wp-content/uploads/2018/05/word-image-3699-768x499.png 768w, /wp-content/uploads/2018/05/word-image-3699-1024x665.png 1024w" sizes="(max-width: 1064px) 100vw, 1064px" /></p>
<p>
  ③访问demo
</p>
<p><img loading="lazy" decoding="async" width="1256" height="393" src="/wp-content/uploads/2018/05/word-image-3700.png" class="wp-image-4159" srcset="/wp-content/uploads/2018/05/word-image-3700.png 1256w, /wp-content/uploads/2018/05/word-image-3700-300x94.png 300w, /wp-content/uploads/2018/05/word-image-3700-768x240.png 768w, /wp-content/uploads/2018/05/word-image-3700-1024x320.png 1024w" sizes="(max-width: 1256px) 100vw, 1256px" /></p>
<p>
  ④查看付款提交的action
</p>
<p><img loading="lazy" decoding="async" width="1183" height="503" src="/wp-content/uploads/2018/05/word-image-3701.png" class="wp-image-4160" srcset="/wp-content/uploads/2018/05/word-image-3701.png 1183w, /wp-content/uploads/2018/05/word-image-3701-300x128.png 300w, /wp-content/uploads/2018/05/word-image-3701-768x327.png 768w, /wp-content/uploads/2018/05/word-image-3701-1024x435.png 1024w" sizes="(max-width: 1183px) 100vw, 1183px" /></p>
<p>
  ⑤点击付款进入支付页
</p>
<p><img loading="lazy" decoding="async" width="1261" height="679" src="/wp-content/uploads/2018/05/word-image-3702.png" class="wp-image-4161" srcset="/wp-content/uploads/2018/05/word-image-3702.png 1261w, /wp-content/uploads/2018/05/word-image-3702-300x162.png 300w, /wp-content/uploads/2018/05/word-image-3702-768x414.png 768w, /wp-content/uploads/2018/05/word-image-3702-1024x551.png 1024w" sizes="(max-width: 1261px) 100vw, 1261px" /></p>
<p>
  由于付款需要使用账户 正常的个人账户不可以使用需要使用测试账户
</p>
<p>
  ⑥查看测试账户
</p>
<p><img loading="lazy" decoding="async" width="1036" height="670" src="/wp-content/uploads/2018/05/word-image-3703.png" class="wp-image-4162" srcset="/wp-content/uploads/2018/05/word-image-3703.png 1036w, /wp-content/uploads/2018/05/word-image-3703-300x194.png 300w, /wp-content/uploads/2018/05/word-image-3703-768x497.png 768w, /wp-content/uploads/2018/05/word-image-3703-1024x662.png 1024w" sizes="(max-width: 1036px) 100vw, 1036px" /></p>
<p>
  ⑦使用测试账户付款
</p>
<p><img loading="lazy" decoding="async" width="1318" height="602" src="/wp-content/uploads/2018/05/word-image-3704.png" class="wp-image-4163" srcset="/wp-content/uploads/2018/05/word-image-3704.png 1318w, /wp-content/uploads/2018/05/word-image-3704-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3704-768x351.png 768w, /wp-content/uploads/2018/05/word-image-3704-1024x468.png 1024w" sizes="(max-width: 1318px) 100vw, 1318px" /></p>
<p>
  ⑧跳转到同步的回调地址
</p>
<p><img loading="lazy" decoding="async" width="1178" height="170" src="/wp-content/uploads/2018/05/word-image-3705.png" class="wp-image-4164" srcset="/wp-content/uploads/2018/05/word-image-3705.png 1178w, /wp-content/uploads/2018/05/word-image-3705-300x43.png 300w, /wp-content/uploads/2018/05/word-image-3705-768x111.png 768w, /wp-content/uploads/2018/05/word-image-3705-1024x148.png 1024w" sizes="(max-width: 1178px) 100vw, 1178px" /></p>
<h2>支付宝支付的流程</h2>
<p><img loading="lazy" decoding="async" width="1015" height="465" src="/wp-content/uploads/2018/05/word-image-3706.png" class="wp-image-4165" srcset="/wp-content/uploads/2018/05/word-image-3706.png 1015w, /wp-content/uploads/2018/05/word-image-3706-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3706-768x352.png 768w" sizes="(max-width: 1015px) 100vw, 1015px" /></p>
<h2>项目中使用支付宝支付</h2>
<p>
  ①将测试的支付宝代码拷贝到项目中
</p>
<p><img loading="lazy" decoding="async" width="1246" height="457" src="/wp-content/uploads/2018/05/word-image-3707.png" class="wp-image-4166" srcset="/wp-content/uploads/2018/05/word-image-3707.png 1246w, /wp-content/uploads/2018/05/word-image-3707-300x110.png 300w, /wp-content/uploads/2018/05/word-image-3707-768x282.png 768w, /wp-content/uploads/2018/05/word-image-3707-1024x376.png 1024w" sizes="(max-width: 1246px) 100vw, 1246px" /></p>
<p>
  ②修改订单入库的返回数据代码
</p>
<p><img loading="lazy" decoding="async" width="1082" height="686" src="/wp-content/uploads/2018/05/word-image-3708.png" class="wp-image-4167" srcset="/wp-content/uploads/2018/05/word-image-3708.png 1082w, /wp-content/uploads/2018/05/word-image-3708-300x190.png 300w, /wp-content/uploads/2018/05/word-image-3708-768x487.png 768w, /wp-content/uploads/2018/05/word-image-3708-1024x649.png 1024w" sizes="(max-width: 1082px) 100vw, 1082px" /></p>
<p>
  ③拷贝支付的代码到下单处
</p>
<p><img loading="lazy" decoding="async" width="1214" height="703" src="/wp-content/uploads/2018/05/word-image-3709.png" class="wp-image-4168" srcset="/wp-content/uploads/2018/05/word-image-3709.png 1214w, /wp-content/uploads/2018/05/word-image-3709-300x174.png 300w, /wp-content/uploads/2018/05/word-image-3709-768x445.png 768w, /wp-content/uploads/2018/05/word-image-3709-1024x593.png 1024w" sizes="(max-width: 1214px) 100vw, 1214px" /><br />
<img loading="lazy" decoding="async" width="1062" height="551" src="/wp-content/uploads/2018/05/word-image-3710.png" class="wp-image-4169" srcset="/wp-content/uploads/2018/05/word-image-3710.png 1062w, /wp-content/uploads/2018/05/word-image-3710-300x156.png 300w, /wp-content/uploads/2018/05/word-image-3710-768x398.png 768w, /wp-content/uploads/2018/05/word-image-3710-1024x531.png 1024w" sizes="(max-width: 1062px) 100vw, 1062px" /></p>
<p>
  ④修改配置文件中的接口地址
</p>
<p><img loading="lazy" decoding="async" width="1082" height="673" src="/wp-content/uploads/2018/05/word-image-3711.png" class="wp-image-4170" srcset="/wp-content/uploads/2018/05/word-image-3711.png 1082w, /wp-content/uploads/2018/05/word-image-3711-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3711-768x478.png 768w, /wp-content/uploads/2018/05/word-image-3711-1024x637.png 1024w" sizes="(max-width: 1082px) 100vw, 1082px" /></p>
<p>
  ⑤当支付时会报错
</p>
<p><img loading="lazy" decoding="async" width="1346" height="472" src="/wp-content/uploads/2018/05/word-image-3712.png" class="wp-image-4171" srcset="/wp-content/uploads/2018/05/word-image-3712.png 1346w, /wp-content/uploads/2018/05/word-image-3712-300x105.png 300w, /wp-content/uploads/2018/05/word-image-3712-768x269.png 768w, /wp-content/uploads/2018/05/word-image-3712-1024x359.png 1024w" sizes="(max-width: 1346px) 100vw, 1346px" /></p>
<p>
  修改函数名称即可
</p>
<p><img loading="lazy" decoding="async" width="1346" height="577" src="/wp-content/uploads/2018/05/word-image-3713.png" class="wp-image-4172" srcset="/wp-content/uploads/2018/05/word-image-3713.png 1346w, /wp-content/uploads/2018/05/word-image-3713-300x129.png 300w, /wp-content/uploads/2018/05/word-image-3713-768x329.png 768w, /wp-content/uploads/2018/05/word-image-3713-1024x439.png 1024w" sizes="(max-width: 1346px) 100vw, 1346px" /></p>
<p>
  ⑥处理同步回调
</p>
<p><img loading="lazy" decoding="async" width="1265" height="692" src="/wp-content/uploads/2018/05/word-image-3714.png" class="wp-image-4173" srcset="/wp-content/uploads/2018/05/word-image-3714.png 1265w, /wp-content/uploads/2018/05/word-image-3714-300x164.png 300w, /wp-content/uploads/2018/05/word-image-3714-768x420.png 768w, /wp-content/uploads/2018/05/word-image-3714-1024x560.png 1024w" sizes="(max-width: 1265px) 100vw, 1265px" /></p>
<p>
  ⑦处理异步
</p>
<p><img loading="lazy" decoding="async" width="1277" height="699" src="/wp-content/uploads/2018/05/word-image-3715.png" class="wp-image-4174" srcset="/wp-content/uploads/2018/05/word-image-3715.png 1277w, /wp-content/uploads/2018/05/word-image-3715-300x164.png 300w, /wp-content/uploads/2018/05/word-image-3715-768x420.png 768w, /wp-content/uploads/2018/05/word-image-3715-1024x561.png 1024w" sizes="(max-width: 1277px) 100vw, 1277px" /></p>
<p>
  支付效果如下
</p>
<p><img loading="lazy" decoding="async" width="1243" height="234" src="/wp-content/uploads/2018/05/word-image-3716.png" class="wp-image-4175" srcset="/wp-content/uploads/2018/05/word-image-3716.png 1243w, /wp-content/uploads/2018/05/word-image-3716-300x56.png 300w, /wp-content/uploads/2018/05/word-image-3716-768x145.png 768w, /wp-content/uploads/2018/05/word-image-3716-1024x193.png 1024w" sizes="(max-width: 1243px) 100vw, 1243px" /></p>
<p>
  注意：支付宝异步回调地址不能有任何的身份验证(支付宝自带验证)
</p>
<h1>邮件注册</h1>
<h2>邮件发送原理</h2>
<p><img loading="lazy" decoding="async" width="1257" height="493" src="/wp-content/uploads/2018/05/word-image-3717.png" class="wp-image-4176" srcset="/wp-content/uploads/2018/05/word-image-3717.png 1257w, /wp-content/uploads/2018/05/word-image-3717-300x118.png 300w, /wp-content/uploads/2018/05/word-image-3717-768x301.png 768w, /wp-content/uploads/2018/05/word-image-3717-1024x402.png 1024w" sizes="(max-width: 1257px) 100vw, 1257px" /></p>
<ol>
<li>
  a用户编写邮箱发送邮件
</li>
<li>
  邮件发送会请求a对应的邮件服务器，请求过程中使用smtp协议进行通信。
</li>
<li>
  当smtp服务收到请求，判断收件人是否为隶属于同一个平台。如果是直接将邮件内容存储到收件人的存储空间。否则请求收件人对应的邮件服务器
</li>
<li>
  收件人的smtp服务接受到请求。同样也会判断，如果确认为本平台的用户将内容存储到对应用户的存储空间
</li>
<li>
  收件人查看邮件时，使用pop3服务将存储空间中的内容获取回来
</li>
</ol>
<h2>实现发送邮件</h2>
<h3>申请邮箱账户</h3>
<p>
  ①注册163邮箱账户
</p>
<p><img loading="lazy" decoding="async" width="1277" height="580" src="/wp-content/uploads/2018/05/word-image-3718.png" class="wp-image-4178" srcset="/wp-content/uploads/2018/05/word-image-3718.png 1277w, /wp-content/uploads/2018/05/word-image-3718-300x136.png 300w, /wp-content/uploads/2018/05/word-image-3718-768x349.png 768w, /wp-content/uploads/2018/05/word-image-3718-1024x465.png 1024w" sizes="(max-width: 1277px) 100vw, 1277px" /></p>
<p>
  ②登录邮箱进入 首页
</p>
<p><img loading="lazy" decoding="async" width="1041" height="353" src="/wp-content/uploads/2018/05/word-image-3719.png" class="wp-image-4179" srcset="/wp-content/uploads/2018/05/word-image-3719.png 1041w, /wp-content/uploads/2018/05/word-image-3719-300x102.png 300w, /wp-content/uploads/2018/05/word-image-3719-768x260.png 768w, /wp-content/uploads/2018/05/word-image-3719-1024x347.png 1024w" sizes="(max-width: 1041px) 100vw, 1041px" /></p>
<h3>开启邮件服务</h3>
<p>
  ①进入开启的设置页
</p>
<p><img loading="lazy" decoding="async" width="1193" height="435" src="/wp-content/uploads/2018/05/word-image-3720.png" class="wp-image-4180" srcset="/wp-content/uploads/2018/05/word-image-3720.png 1193w, /wp-content/uploads/2018/05/word-image-3720-300x109.png 300w, /wp-content/uploads/2018/05/word-image-3720-768x280.png 768w, /wp-content/uploads/2018/05/word-image-3720-1024x373.png 1024w" sizes="(max-width: 1193px) 100vw, 1193px" /><br />
<img loading="lazy" decoding="async" width="1137" height="445" src="/wp-content/uploads/2018/05/word-image-3721.png" class="wp-image-4181" srcset="/wp-content/uploads/2018/05/word-image-3721.png 1137w, /wp-content/uploads/2018/05/word-image-3721-300x117.png 300w, /wp-content/uploads/2018/05/word-image-3721-768x301.png 768w, /wp-content/uploads/2018/05/word-image-3721-1024x401.png 1024w" sizes="(max-width: 1137px) 100vw, 1137px" /></p>
<p>
  ②开启权限(已经开启可以忽略)
</p>
<p><img loading="lazy" decoding="async" width="1151" height="401" src="/wp-content/uploads/2018/05/word-image-3722.png" class="wp-image-4182" srcset="/wp-content/uploads/2018/05/word-image-3722.png 1151w, /wp-content/uploads/2018/05/word-image-3722-300x105.png 300w, /wp-content/uploads/2018/05/word-image-3722-768x268.png 768w, /wp-content/uploads/2018/05/word-image-3722-1024x357.png 1024w" sizes="(max-width: 1151px) 100vw, 1151px" /></p>
<p>
  ③设置第三方授权密码
</p>
<p><img loading="lazy" decoding="async" width="1100" height="438" src="/wp-content/uploads/2018/05/word-image-3723.png" class="wp-image-4183" srcset="/wp-content/uploads/2018/05/word-image-3723.png 1100w, /wp-content/uploads/2018/05/word-image-3723-300x119.png 300w, /wp-content/uploads/2018/05/word-image-3723-768x306.png 768w, /wp-content/uploads/2018/05/word-image-3723-1024x408.png 1024w" sizes="(max-width: 1100px) 100vw, 1100px" /></p>
<p>
  此密码跟登录密码劲量不要设置为一致。此密码时给第三方使用。当第三方需要使用该邮箱发送邮件需要进行密码校验。密码校验使用第三方授权密码
</p>
<h3>使用PHPmailer实现邮箱发送</h3>
<p>
  ①将源码拷贝web目录下
</p>
<p><img loading="lazy" decoding="async" width="1319" height="489" src="/wp-content/uploads/2018/05/word-image-3724.png" class="wp-image-4184" srcset="/wp-content/uploads/2018/05/word-image-3724.png 1319w, /wp-content/uploads/2018/05/word-image-3724-300x111.png 300w, /wp-content/uploads/2018/05/word-image-3724-768x285.png 768w, /wp-content/uploads/2018/05/word-image-3724-1024x380.png 1024w" sizes="(max-width: 1319px) 100vw, 1319px" /></p>
<p>
  ②编写发送邮件的代码
</p>
<p><img loading="lazy" decoding="async" width="1052" height="701" src="/wp-content/uploads/2018/05/word-image-3725.png" class="wp-image-4185" srcset="/wp-content/uploads/2018/05/word-image-3725.png 1052w, /wp-content/uploads/2018/05/word-image-3725-300x200.png 300w, /wp-content/uploads/2018/05/word-image-3725-768x512.png 768w, /wp-content/uploads/2018/05/word-image-3725-1024x682.png 1024w" sizes="(max-width: 1052px) 100vw, 1052px" /></p>
<p>
  使用收件人的邮箱查看效果
</p>
<p><img loading="lazy" decoding="async" width="1189" height="556" src="/wp-content/uploads/2018/05/word-image-3726.png" class="wp-image-4186" srcset="/wp-content/uploads/2018/05/word-image-3726.png 1189w, /wp-content/uploads/2018/05/word-image-3726-300x140.png 300w, /wp-content/uploads/2018/05/word-image-3726-768x359.png 768w, /wp-content/uploads/2018/05/word-image-3726-1024x479.png 1024w" sizes="(max-width: 1189px) 100vw, 1189px" /></p>
<p>
  ③解决报错
</p>
<p><img loading="lazy" decoding="async" width="1339" height="176" src="/wp-content/uploads/2018/05/word-image-3727.png" class="wp-image-4187" srcset="/wp-content/uploads/2018/05/word-image-3727.png 1339w, /wp-content/uploads/2018/05/word-image-3727-300x39.png 300w, /wp-content/uploads/2018/05/word-image-3727-768x101.png 768w, /wp-content/uploads/2018/05/word-image-3727-1024x135.png 1024w" sizes="(max-width: 1339px) 100vw, 1339px" /></p>
<p>
  由于版本问题函数已经不存在因此注释掉对于代码即可
</p>
</p>
<p><img loading="lazy" decoding="async" width="1218" height="673" src="/wp-content/uploads/2018/05/word-image-3728.png" class="wp-image-4188" srcset="/wp-content/uploads/2018/05/word-image-3728.png 1218w, /wp-content/uploads/2018/05/word-image-3728-300x166.png 300w, /wp-content/uploads/2018/05/word-image-3728-768x424.png 768w, /wp-content/uploads/2018/05/word-image-3728-1024x566.png 1024w" sizes="(max-width: 1218px) 100vw, 1218px" /></p>
<h2>实现邮件注册</h2>
<h3>将发送邮件封装成为函数</h3>
<p>
  ①拷贝phpemailer源码
</p>
<p><img loading="lazy" decoding="async" width="1208" height="478" src="/wp-content/uploads/2018/05/word-image-3729.png" class="wp-image-4189" srcset="/wp-content/uploads/2018/05/word-image-3729.png 1208w, /wp-content/uploads/2018/05/word-image-3729-300x119.png 300w, /wp-content/uploads/2018/05/word-image-3729-768x304.png 768w, /wp-content/uploads/2018/05/word-image-3729-1024x405.png 1024w" sizes="(max-width: 1208px) 100vw, 1208px" /></p>
<p>
  ②创建发送邮件的公共函数
</p>
<p><img loading="lazy" decoding="async" width="975" height="688" src="/wp-content/uploads/2018/05/word-image-3730.png" class="wp-image-4190" srcset="/wp-content/uploads/2018/05/word-image-3730.png 975w, /wp-content/uploads/2018/05/word-image-3730-300x212.png 300w, /wp-content/uploads/2018/05/word-image-3730-768x542.png 768w" sizes="(max-width: 975px) 100vw, 975px" /></p>
<p>
  ③创建方法测试邮件发送
</p>
<p><img loading="lazy" decoding="async" width="945" height="427" src="/wp-content/uploads/2018/05/word-image-3731.png" class="wp-image-4191" srcset="/wp-content/uploads/2018/05/word-image-3731.png 945w, /wp-content/uploads/2018/05/word-image-3731-300x136.png 300w, /wp-content/uploads/2018/05/word-image-3731-768x347.png 768w" sizes="(max-width: 945px) 100vw, 945px" /><br />
<img loading="lazy" decoding="async" width="678" height="181" src="/wp-content/uploads/2018/05/word-image-3732.png" class="wp-image-4192" srcset="/wp-content/uploads/2018/05/word-image-3732.png 678w, /wp-content/uploads/2018/05/word-image-3732-300x80.png 300w" sizes="(max-width: 678px) 100vw, 678px" /></p>
<h3>修改数据表</h3>
<p>
  ①修改表结构
</p>
<p><img loading="lazy" decoding="async" width="795" height="331" src="/wp-content/uploads/2018/05/word-image-3733.png" class="wp-image-4193" srcset="/wp-content/uploads/2018/05/word-image-3733.png 795w, /wp-content/uploads/2018/05/word-image-3733-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3733-768x320.png 768w" sizes="(max-width: 795px) 100vw, 795px" /></p>
<p>
  ②修改自定义字段
</p>
<p><img loading="lazy" decoding="async" width="1082" height="446" src="/wp-content/uploads/2018/05/word-image-3734.png" class="wp-image-4194" srcset="/wp-content/uploads/2018/05/word-image-3734.png 1082w, /wp-content/uploads/2018/05/word-image-3734-300x124.png 300w, /wp-content/uploads/2018/05/word-image-3734-768x317.png 768w, /wp-content/uploads/2018/05/word-image-3734-1024x422.png 1024w" sizes="(max-width: 1082px) 100vw, 1082px" /></p>
<h3>实现邮箱注册</h3>
<p>
  ①创建邮箱注册的方法
</p>
<p><img loading="lazy" decoding="async" width="997" height="583" src="/wp-content/uploads/2018/05/word-image-3735.png" class="wp-image-4195" srcset="/wp-content/uploads/2018/05/word-image-3735.png 997w, /wp-content/uploads/2018/05/word-image-3735-300x175.png 300w, /wp-content/uploads/2018/05/word-image-3735-768x449.png 768w" sizes="(max-width: 997px) 100vw, 997px" /></p>
<p>
  ②处理模板文件
</p>
<p><img loading="lazy" decoding="async" width="1093" height="685" src="/wp-content/uploads/2018/05/word-image-3736.png" class="wp-image-4196" srcset="/wp-content/uploads/2018/05/word-image-3736.png 1093w, /wp-content/uploads/2018/05/word-image-3736-300x188.png 300w, /wp-content/uploads/2018/05/word-image-3736-768x481.png 768w, /wp-content/uploads/2018/05/word-image-3736-1024x642.png 1024w" sizes="(max-width: 1093px) 100vw, 1093px" /><br />
<img loading="lazy" decoding="async" width="909" height="557" src="/wp-content/uploads/2018/05/word-image-3737.png" class="wp-image-4197" srcset="/wp-content/uploads/2018/05/word-image-3737.png 909w, /wp-content/uploads/2018/05/word-image-3737-300x184.png 300w, /wp-content/uploads/2018/05/word-image-3737-768x471.png 768w" sizes="(max-width: 909px) 100vw, 909px" /></p>
<p>
  ③在模型中实现方法对用户信息进行入库
</p>
<p><img loading="lazy" decoding="async" width="1027" height="668" src="/wp-content/uploads/2018/05/word-image-3738.png" class="wp-image-4198" srcset="/wp-content/uploads/2018/05/word-image-3738.png 1027w, /wp-content/uploads/2018/05/word-image-3738-300x195.png 300w, /wp-content/uploads/2018/05/word-image-3738-768x500.png 768w, /wp-content/uploads/2018/05/word-image-3738-1024x666.png 1024w" sizes="(max-width: 1027px) 100vw, 1027px" /></p>
<p>
  ④测试实现注册的入库
</p>
<p><img loading="lazy" decoding="async" width="1187" height="233" src="/wp-content/uploads/2018/05/word-image-3739.png" class="wp-image-4199" srcset="/wp-content/uploads/2018/05/word-image-3739.png 1187w, /wp-content/uploads/2018/05/word-image-3739-300x59.png 300w, /wp-content/uploads/2018/05/word-image-3739-768x151.png 768w, /wp-content/uploads/2018/05/word-image-3739-1024x201.png 1024w" sizes="(max-width: 1187px) 100vw, 1187px" /></p>
<h3>实现注册成功发送邮件</h3>
<p>
  激活邮件本质就是项目中的一个方法的连接地址。此地址当用户访问时需要知道具体是哪一个用户在进行激活操作。因此需要标识符。
</p>
<p><img loading="lazy" decoding="async" width="1034" height="670" src="/wp-content/uploads/2018/05/word-image-3740.png" class="wp-image-4200" srcset="/wp-content/uploads/2018/05/word-image-3740.png 1034w, /wp-content/uploads/2018/05/word-image-3740-300x194.png 300w, /wp-content/uploads/2018/05/word-image-3740-768x498.png 768w, /wp-content/uploads/2018/05/word-image-3740-1024x664.png 1024w" sizes="(max-width: 1034px) 100vw, 1034px" /></p>
<p>
  效果如下
</p>
<p><img loading="lazy" decoding="async" width="951" height="436" src="/wp-content/uploads/2018/05/word-image-3741.png" class="wp-image-4201" srcset="/wp-content/uploads/2018/05/word-image-3741.png 951w, /wp-content/uploads/2018/05/word-image-3741-300x138.png 300w, /wp-content/uploads/2018/05/word-image-3741-768x352.png 768w" sizes="(max-width: 951px) 100vw, 951px" /></p>
<h3>实现用户激活</h3>
<p>
  ①实现邮箱激活
</p>
<p><img loading="lazy" decoding="async" width="1073" height="592" src="/wp-content/uploads/2018/05/word-image-3742.png" class="wp-image-4202" srcset="/wp-content/uploads/2018/05/word-image-3742.png 1073w, /wp-content/uploads/2018/05/word-image-3742-300x166.png 300w, /wp-content/uploads/2018/05/word-image-3742-768x424.png 768w, /wp-content/uploads/2018/05/word-image-3742-1024x565.png 1024w" sizes="(max-width: 1073px) 100vw, 1073px" /></p>
<p>
  点击链接激活之后的结果
</p>
<p><img loading="lazy" decoding="async" width="1299" height="346" src="/wp-content/uploads/2018/05/word-image-3743.png" class="wp-image-4203" srcset="/wp-content/uploads/2018/05/word-image-3743.png 1299w, /wp-content/uploads/2018/05/word-image-3743-300x80.png 300w, /wp-content/uploads/2018/05/word-image-3743-768x205.png 768w, /wp-content/uploads/2018/05/word-image-3743-1024x273.png 1024w" sizes="(max-width: 1299px) 100vw, 1299px" /></p>
<p>
  ②修改手机注册默认为激活状态
</p>
<p><img loading="lazy" decoding="async" width="1017" height="533" src="/wp-content/uploads/2018/05/word-image-3744.png" class="wp-image-4204" srcset="/wp-content/uploads/2018/05/word-image-3744.png 1017w, /wp-content/uploads/2018/05/word-image-3744-300x157.png 300w, /wp-content/uploads/2018/05/word-image-3744-768x403.png 768w" sizes="(max-width: 1017px) 100vw, 1017px" /></p>
<p>
  ③禁止没有激活的用户登录
</p>
<p><img loading="lazy" decoding="async" width="986" height="701" src="/wp-content/uploads/2018/05/word-image-3745.png" class="wp-image-4205" srcset="/wp-content/uploads/2018/05/word-image-3745.png 986w, /wp-content/uploads/2018/05/word-image-3745-300x213.png 300w, /wp-content/uploads/2018/05/word-image-3745-768x546.png 768w" sizes="(max-width: 986px) 100vw, 986px" /></p>
<h1>3、腾讯登录</h1>
<h2>3.1、腾讯登录签约流程</h2>
<p>
  ①使用QQ号登录QQ互联
</p>
<p><img loading="lazy" decoding="async" width="1366" height="390" src="/wp-content/uploads/2018/05/word-image-3746.png" class="wp-image-4206" srcset="/wp-content/uploads/2018/05/word-image-3746.png 1366w, /wp-content/uploads/2018/05/word-image-3746-300x86.png 300w, /wp-content/uploads/2018/05/word-image-3746-768x219.png 768w, /wp-content/uploads/2018/05/word-image-3746-1024x292.png 1024w" sizes="(max-width: 1366px) 100vw, 1366px" /></p>
<p>
  具体地址：<a href="https://connect.qq.com/">https://connect.qq.com/</a>
</p>
<p>
  ②申请成为开发者
</p>
<p>
  对于第一次登录QQ互联默认会提示表单进行填写
</p>
<p><img loading="lazy" decoding="async" width="1207" height="690" src="/wp-content/uploads/2018/05/word-image-3747.png" class="wp-image-4207" srcset="/wp-content/uploads/2018/05/word-image-3747.png 1207w, /wp-content/uploads/2018/05/word-image-3747-300x171.png 300w, /wp-content/uploads/2018/05/word-image-3747-768x439.png 768w, /wp-content/uploads/2018/05/word-image-3747-1024x585.png 1024w" sizes="(max-width: 1207px) 100vw, 1207px" /></p>
<p>
  对于目前的在QQ互联下去申请成为开发者操作上可能不是特别方便 。也可以在腾讯开发平台下进行申请(http://open.qq.com/)。
</p>
<p>
  当开发者申请完成之后在应用中可以看到如下的结果
</p>
<p><img loading="lazy" decoding="async" width="1231" height="340" src="/wp-content/uploads/2018/05/word-image-3748.png" class="wp-image-4208" srcset="/wp-content/uploads/2018/05/word-image-3748.png 1231w, /wp-content/uploads/2018/05/word-image-3748-300x83.png 300w, /wp-content/uploads/2018/05/word-image-3748-768x212.png 768w, /wp-content/uploads/2018/05/word-image-3748-1024x283.png 1024w" sizes="(max-width: 1231px) 100vw, 1231px" /></p>
<p>
  ③创建应用
</p>
<p>
  当成为开发者之后才能创建应用
</p>
<p><img loading="lazy" decoding="async" width="1120" height="463" src="/wp-content/uploads/2018/05/word-image-3749.png" class="wp-image-4209" srcset="/wp-content/uploads/2018/05/word-image-3749.png 1120w, /wp-content/uploads/2018/05/word-image-3749-300x124.png 300w, /wp-content/uploads/2018/05/word-image-3749-768x317.png 768w, /wp-content/uploads/2018/05/word-image-3749-1024x423.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" /></p>
<p>
  ④选择具体的应用方式
</p>
<p><img loading="lazy" decoding="async" width="698" height="349" src="/wp-content/uploads/2018/05/word-image-3750.png" class="wp-image-4210" srcset="/wp-content/uploads/2018/05/word-image-3750.png 698w, /wp-content/uploads/2018/05/word-image-3750-300x150.png 300w" sizes="(max-width: 698px) 100vw, 698px" /></p>
<p>
  ⑤填写具体的信息
</p>
<p><img loading="lazy" decoding="async" width="1226" height="636" src="/wp-content/uploads/2018/05/word-image-3751.png" class="wp-image-4211" srcset="/wp-content/uploads/2018/05/word-image-3751.png 1226w, /wp-content/uploads/2018/05/word-image-3751-300x156.png 300w, /wp-content/uploads/2018/05/word-image-3751-768x398.png 768w, /wp-content/uploads/2018/05/word-image-3751-1024x531.png 1024w" sizes="(max-width: 1226px) 100vw, 1226px" /></p>
<p>
  ⑥查看应用列表
</p>
<p><img loading="lazy" decoding="async" width="1066" height="407" src="/wp-content/uploads/2018/05/word-image-3752.png" class="wp-image-4212" srcset="/wp-content/uploads/2018/05/word-image-3752.png 1066w, /wp-content/uploads/2018/05/word-image-3752-300x115.png 300w, /wp-content/uploads/2018/05/word-image-3752-768x293.png 768w, /wp-content/uploads/2018/05/word-image-3752-1024x391.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /></p>
<p>
  创建应用成功之后同样需要审核。审核周期大概一天。
</p>
<p>
  ⑦查看应用的appid及APPkey
</p>
<p><img loading="lazy" decoding="async" width="1052" height="350" src="/wp-content/uploads/2018/05/word-image-3753.png" class="wp-image-4213" srcset="/wp-content/uploads/2018/05/word-image-3753.png 1052w, /wp-content/uploads/2018/05/word-image-3753-300x100.png 300w, /wp-content/uploads/2018/05/word-image-3753-768x256.png 768w, /wp-content/uploads/2018/05/word-image-3753-1024x341.png 1024w" sizes="(max-width: 1052px) 100vw, 1052px" /></p>
<h2>3.2、查看接口文档</h2>
<p>
  ①进入文档
</p>
<p><img loading="lazy" decoding="async" width="1128" height="199" src="/wp-content/uploads/2018/05/word-image-3754.png" class="wp-image-4214" srcset="/wp-content/uploads/2018/05/word-image-3754.png 1128w, /wp-content/uploads/2018/05/word-image-3754-300x53.png 300w, /wp-content/uploads/2018/05/word-image-3754-768x135.png 768w, /wp-content/uploads/2018/05/word-image-3754-1024x181.png 1024w" sizes="(max-width: 1128px) 100vw, 1128px" /></p>
<p>
  ②下载SDK代码
</p>
<p><img loading="lazy" decoding="async" width="820" height="511" src="/wp-content/uploads/2018/05/word-image-3755.png" class="wp-image-4215" srcset="/wp-content/uploads/2018/05/word-image-3755.png 820w, /wp-content/uploads/2018/05/word-image-3755-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3755-768x479.png 768w" sizes="(max-width: 820px) 100vw, 820px" /></p>
<p>
  ③查看下载的目录
</p>
<p><img loading="lazy" decoding="async" width="969" height="342" src="/wp-content/uploads/2018/05/word-image-3756.png" class="wp-image-4216" srcset="/wp-content/uploads/2018/05/word-image-3756.png 969w, /wp-content/uploads/2018/05/word-image-3756-300x106.png 300w, /wp-content/uploads/2018/05/word-image-3756-768x271.png 768w" sizes="(max-width: 969px) 100vw, 969px" /></p>
<h2>3.2、使用demo</h2>
<p>
  ①拷贝源码到web目录
</p>
<p><img loading="lazy" decoding="async" width="1108" height="483" src="/wp-content/uploads/2018/05/word-image-3757.png" class="wp-image-4217" srcset="/wp-content/uploads/2018/05/word-image-3757.png 1108w, /wp-content/uploads/2018/05/word-image-3757-300x131.png 300w, /wp-content/uploads/2018/05/word-image-3757-768x335.png 768w, /wp-content/uploads/2018/05/word-image-3757-1024x446.png 1024w" sizes="(max-width: 1108px) 100vw, 1108px" /></p>
<p>
  ②访问QQ源码安装设置配置
</p>
<p><img loading="lazy" decoding="async" width="780" height="270" src="/wp-content/uploads/2018/05/word-image-3758.png" class="wp-image-4218" srcset="/wp-content/uploads/2018/05/word-image-3758.png 780w, /wp-content/uploads/2018/05/word-image-3758-300x104.png 300w, /wp-content/uploads/2018/05/word-image-3758-768x266.png 768w" sizes="(max-width: 780px) 100vw, 780px" /></p>
<p>
  具体配置信息
</p>
<p><img loading="lazy" decoding="async" width="1218" height="586" src="/wp-content/uploads/2018/05/word-image-3759.png" class="wp-image-4219" srcset="/wp-content/uploads/2018/05/word-image-3759.png 1218w, /wp-content/uploads/2018/05/word-image-3759-300x144.png 300w, /wp-content/uploads/2018/05/word-image-3759-768x369.png 768w, /wp-content/uploads/2018/05/word-image-3759-1024x493.png 1024w" sizes="(max-width: 1218px) 100vw, 1218px" /></p>
<p>
  备注：上图的授权回调地址缺少一层qq目录
</p>
<p>
  修改应用的授权回调
</p>
<p><img loading="lazy" decoding="async" width="1090" height="459" src="/wp-content/uploads/2018/05/word-image-3760.png" class="wp-image-4220" srcset="/wp-content/uploads/2018/05/word-image-3760.png 1090w, /wp-content/uploads/2018/05/word-image-3760-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3760-768x323.png 768w, /wp-content/uploads/2018/05/word-image-3760-1024x431.png 1024w" sizes="(max-width: 1090px) 100vw, 1090px" /></p>
<p>
  ③查看案例
</p>
<p><img loading="lazy" decoding="async" width="658" height="172" src="/wp-content/uploads/2018/05/word-image-3761.png" class="wp-image-4221" srcset="/wp-content/uploads/2018/05/word-image-3761.png 658w, /wp-content/uploads/2018/05/word-image-3761-300x78.png 300w" sizes="(max-width: 658px) 100vw, 658px" /></p>
<p>
  查看QQ登录
</p>
<p><img loading="lazy" decoding="async" width="879" height="386" src="/wp-content/uploads/2018/05/word-image-3762.png" class="wp-image-4222" srcset="/wp-content/uploads/2018/05/word-image-3762.png 879w, /wp-content/uploads/2018/05/word-image-3762-300x132.png 300w, /wp-content/uploads/2018/05/word-image-3762-768x337.png 768w" sizes="(max-width: 879px) 100vw, 879px" /></p>
<p>
  进入授权页授权
</p>
<p><img loading="lazy" decoding="async" width="1183" height="504" src="/wp-content/uploads/2018/05/word-image-3763.png" class="wp-image-4223" srcset="/wp-content/uploads/2018/05/word-image-3763.png 1183w, /wp-content/uploads/2018/05/word-image-3763-300x128.png 300w, /wp-content/uploads/2018/05/word-image-3763-768x327.png 768w, /wp-content/uploads/2018/05/word-image-3763-1024x436.png 1024w" sizes="(max-width: 1183px) 100vw, 1183px" /></p>
<p>
  查看结果
</p>
<p><img loading="lazy" decoding="async" width="1133" height="134" src="/wp-content/uploads/2018/05/word-image-3764.png" class="wp-image-4224" srcset="/wp-content/uploads/2018/05/word-image-3764.png 1133w, /wp-content/uploads/2018/05/word-image-3764-300x35.png 300w, /wp-content/uploads/2018/05/word-image-3764-768x91.png 768w, /wp-content/uploads/2018/05/word-image-3764-1024x121.png 1024w" sizes="(max-width: 1133px) 100vw, 1133px" /></p>
<h2>3.4、项目中实现QQ登录</h2>
<p>
  ①将QQ登录的源码拷贝到项目中
</p>
<p><img loading="lazy" decoding="async" width="1334" height="608" src="/wp-content/uploads/2018/05/word-image-3765.png" class="wp-image-4225" srcset="/wp-content/uploads/2018/05/word-image-3765.png 1334w, /wp-content/uploads/2018/05/word-image-3765-300x137.png 300w, /wp-content/uploads/2018/05/word-image-3765-768x350.png 768w, /wp-content/uploads/2018/05/word-image-3765-1024x467.png 1024w" sizes="(max-width: 1334px) 100vw, 1334px" /></p>
<p>
  ②访问配置
</p>
<p><img loading="lazy" decoding="async" width="806" height="292" src="/wp-content/uploads/2018/05/word-image-3766.png" class="wp-image-4226" srcset="/wp-content/uploads/2018/05/word-image-3766.png 806w, /wp-content/uploads/2018/05/word-image-3766-300x109.png 300w, /wp-content/uploads/2018/05/word-image-3766-768x278.png 768w" sizes="(max-width: 806px) 100vw, 806px" /><br />
<img loading="lazy" decoding="async" width="1223" height="588" src="/wp-content/uploads/2018/05/word-image-3767.png" class="wp-image-4227" srcset="/wp-content/uploads/2018/05/word-image-3767.png 1223w, /wp-content/uploads/2018/05/word-image-3767-300x144.png 300w, /wp-content/uploads/2018/05/word-image-3767-768x369.png 768w, /wp-content/uploads/2018/05/word-image-3767-1024x492.png 1024w" sizes="(max-width: 1223px) 100vw, 1223px" /></p>
<p>
  ③处理登录的QQ图标
</p>
<p>
  先给QQ登录图标增加点击事件
</p>
<p><img loading="lazy" decoding="async" width="1079" height="310" src="/wp-content/uploads/2018/05/word-image-3768.png" class="wp-image-4228" srcset="/wp-content/uploads/2018/05/word-image-3768.png 1079w, /wp-content/uploads/2018/05/word-image-3768-300x86.png 300w, /wp-content/uploads/2018/05/word-image-3768-768x221.png 768w, /wp-content/uploads/2018/05/word-image-3768-1024x294.png 1024w" sizes="(max-width: 1079px) 100vw, 1079px" /></p>
<p>
  拷贝事件代码修改
</p>
<p><img loading="lazy" decoding="async" width="1280" height="668" src="/wp-content/uploads/2018/05/word-image-3769.png" class="wp-image-4229" srcset="/wp-content/uploads/2018/05/word-image-3769.png 1280w, /wp-content/uploads/2018/05/word-image-3769-300x157.png 300w, /wp-content/uploads/2018/05/word-image-3769-768x401.png 768w, /wp-content/uploads/2018/05/word-image-3769-1024x534.png 1024w" sizes="(max-width: 1280px) 100vw, 1280px" /></p>
<p>
  ④实现oauth方法
</p>
<p><img loading="lazy" decoding="async" width="1282" height="650" src="/wp-content/uploads/2018/05/word-image-3770.png" class="wp-image-4230" srcset="/wp-content/uploads/2018/05/word-image-3770.png 1282w, /wp-content/uploads/2018/05/word-image-3770-300x152.png 300w, /wp-content/uploads/2018/05/word-image-3770-768x389.png 768w, /wp-content/uploads/2018/05/word-image-3770-1024x519.png 1024w" sizes="(max-width: 1282px) 100vw, 1282px" /></p>
<p>
  当访问oauth方法会自动的进入到授权页
</p>
<p><img loading="lazy" decoding="async" width="1264" height="479" src="/wp-content/uploads/2018/05/word-image-3771.png" class="wp-image-4231" srcset="/wp-content/uploads/2018/05/word-image-3771.png 1264w, /wp-content/uploads/2018/05/word-image-3771-300x114.png 300w, /wp-content/uploads/2018/05/word-image-3771-768x291.png 768w, /wp-content/uploads/2018/05/word-image-3771-1024x388.png 1024w" sizes="(max-width: 1264px) 100vw, 1264px" /></p>
<p>
  ⑤实现回调接口
</p>
<p><img loading="lazy" decoding="async" width="1215" height="711" src="/wp-content/uploads/2018/05/word-image-3772.png" class="wp-image-4232" srcset="/wp-content/uploads/2018/05/word-image-3772.png 1215w, /wp-content/uploads/2018/05/word-image-3772-300x176.png 300w, /wp-content/uploads/2018/05/word-image-3772-768x449.png 768w, /wp-content/uploads/2018/05/word-image-3772-1024x599.png 1024w" sizes="(max-width: 1215px) 100vw, 1215px" /></p>
<p>
  效果
</p>
<p><img loading="lazy" decoding="async" width="1128" height="202" src="/wp-content/uploads/2018/05/word-image-3773.png" class="wp-image-4233" srcset="/wp-content/uploads/2018/05/word-image-3773.png 1128w, /wp-content/uploads/2018/05/word-image-3773-300x54.png 300w, /wp-content/uploads/2018/05/word-image-3773-768x138.png 768w, /wp-content/uploads/2018/05/word-image-3773-1024x183.png 1024w" sizes="(max-width: 1128px) 100vw, 1128px" /></p>
<p>
  ⑥修改代码获取用户信息
</p>
<p><img loading="lazy" decoding="async" width="966" height="596" src="/wp-content/uploads/2018/05/word-image-3774.png" class="wp-image-4234" srcset="/wp-content/uploads/2018/05/word-image-3774.png 966w, /wp-content/uploads/2018/05/word-image-3774-300x185.png 300w, /wp-content/uploads/2018/05/word-image-3774-768x474.png 768w" sizes="(max-width: 966px) 100vw, 966px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="1118" height="472" src="/wp-content/uploads/2018/05/word-image-3775.png" class="wp-image-4235" srcset="/wp-content/uploads/2018/05/word-image-3775.png 1118w, /wp-content/uploads/2018/05/word-image-3775-300x127.png 300w, /wp-content/uploads/2018/05/word-image-3775-768x324.png 768w, /wp-content/uploads/2018/05/word-image-3775-1024x432.png 1024w" sizes="(max-width: 1118px) 100vw, 1118px" /></p>
<p>
  ⑦再次修改调用模型方法实现注册
</p>
<p><img loading="lazy" decoding="async" width="1037" height="668" src="/wp-content/uploads/2018/05/word-image-3776.png" class="wp-image-4236" srcset="/wp-content/uploads/2018/05/word-image-3776.png 1037w, /wp-content/uploads/2018/05/word-image-3776-300x193.png 300w, /wp-content/uploads/2018/05/word-image-3776-768x495.png 768w, /wp-content/uploads/2018/05/word-image-3776-1024x660.png 1024w" sizes="(max-width: 1037px) 100vw, 1037px" /></p>
<p>
  ⑧增加openID字段
</p>
<p><img loading="lazy" decoding="async" width="794" height="335" src="/wp-content/uploads/2018/05/word-image-3777.png" class="wp-image-4237" srcset="/wp-content/uploads/2018/05/word-image-3777.png 794w, /wp-content/uploads/2018/05/word-image-3777-300x127.png 300w, /wp-content/uploads/2018/05/word-image-3777-768x324.png 768w" sizes="(max-width: 794px) 100vw, 794px" /></p>
<p>
  ⑨修改模型
</p>
<p><img loading="lazy" decoding="async" width="1047" height="700" src="/wp-content/uploads/2018/05/word-image-3778.png" class="wp-image-4238" srcset="/wp-content/uploads/2018/05/word-image-3778.png 1047w, /wp-content/uploads/2018/05/word-image-3778-300x201.png 300w, /wp-content/uploads/2018/05/word-image-3778-768x513.png 768w, /wp-content/uploads/2018/05/word-image-3778-1024x685.png 1024w" sizes="(max-width: 1047px) 100vw, 1047px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4136.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
