<?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>会话 &#8211; 个人随笔</title>
	<atom:link href="/label/%E4%BC%9A%E8%AF%9D/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Sat, 19 May 2018 16:03:50 +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>会话 &#8211; 个人随笔</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Laravel框架（四）视图、会话、中间价、防翻墙、数据验证、多表查询、扩展：PHP use使用场景、钻石设计软件</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/6079.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/6079.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 16:03:50 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[中间价]]></category>
		<category><![CDATA[会话]]></category>
		<category><![CDATA[多表查询]]></category>
		<category><![CDATA[扩展：PHP use使用场景]]></category>
		<category><![CDATA[数据验证]]></category>
		<category><![CDATA[视图]]></category>
		<category><![CDATA[钻石设计软件]]></category>
		<category><![CDATA[防翻墙]]></category>
		<guid isPermaLink="false">/?p=6079</guid>

					<description><![CDATA[Laravel框架第4天 复习 composer：就是PHP的软件管家，帮助PHP下载项目所需组件（类），如： [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1><a id="post-6079-_Toc487903166"></a>Laravel框架第4天</h1>
<h1>复习</h1>
<p>
  composer：就是PHP的软件管家，帮助PHP下载项目所需组件（类），如：验证码类、上传文件类等等
</p>
<p>
  数据迁移：就是用PHP管理数据库
</p>
<p>
  创建迁移：php artisan make:migration 数据迁移名称
</p>
<p>
  创建迁移：php artisan make:migration create_表名_table  &#8211;create=表名
</p>
<p>
  创建迁移：php artisan make:migration update_表名_table  &#8211;table=表名
</p>
<p>
  运行迁移：php artisan migrate
</p>
<p>
  撤销迁移：php artisan migrate:rollback
</p>
<p>
  数据填充：就是用PHP快速插入测试数据
</p>
<p>
  创建填充：php artisan make:seeder 填充器名称
</p>
<p>
  运行填充：php artisan db:seed &#8211;class=填充器名称
</p>
<p>
  faker说明：就是PHP的一个库（类）
</p>
<p>
  faker作用：生成假数据
</p>
<h1><a id="post-6079-_Toc487990951"></a>一、视图2（页面布局） </h1>
<h2>1、说明</h2>
<p>
  一般在做网站的时候，我们会将网页中公共的部分提取出来，形成一个公共的布局文件（父模板，提取公共的区域），然后在让其他的页面继承该文件以获取公共的区域内容。同时在子页面我们可以定义好自己的内容，然后在公共的页面进行调用显示。
</p>
<p><img fetchpriority="high" decoding="async" width="1055" height="388" src="/wp-content/uploads/2018/05/word-image-5530.png" class="wp-image-6080" srcset="/wp-content/uploads/2018/05/word-image-5530.png 1055w, /wp-content/uploads/2018/05/word-image-5530-300x110.png 300w, /wp-content/uploads/2018/05/word-image-5530-768x282.png 768w, /wp-content/uploads/2018/05/word-image-5530-1024x377.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /></p>
<h2>2、语法</h2>
<p>
  @yield(&#8216;标识&#8217;)  	 			父（公共区域）定义内容片段，子填充
</p>
<p>
  @extends(&#8216;标识&#8217;) 	 		子继承父（公共区域）
</p>
<p>
  @section(&#8216;标识&#8217;, &#8216;默认值&#8217;)   子填充父（公共区域）文字
</p>
<p>
  @section(&#8216;标识&#8217;) 				子填充父（公共区域）HTML代码
</p>
<p>
  存放子页面内容
</p>
<p>
  @endsection
</p>
<p>
  @include(&#8216;视图标识&#8217;, [&#8216;key&#8217; =&gt; &#8216;value变量值&#8217;]) 调取公共页面（一般多个子页面提取）
</p>
<h2>3、代码</h2>
<h3>resources\views\layouts\common.blade.php</h3>
<p>
  &lt;!DOCTYPE html&gt;
</p>
<p>
  &lt;html lang=&#8221;zh-CN&#8221;&gt;
</p>
<p>
  &lt;head&gt;
</p>
<p>
      &lt;meta charset=&#8221;utf-8&#8243;&gt;
</p>
<p>
      &lt;meta http-equiv=&#8221;X-UA-Compatible&#8221; content=&#8221;IE=edge&#8221;&gt;
</p>
<p>
      &lt;meta name=&#8221;viewport&#8221; content=&#8221;width=device-width, initial-scale=1&#8243;&gt;
</p>
<p>
      &lt;title&gt;laravel&lt;/title&gt;
</p>
<p>
      &lt;!&#8211; Bootstrap CSS 文件 &#8211;&gt;
</p>
<p>
      &lt;link rel=&#8221;stylesheet&#8221; href=&#8221;{{ asset(&#8216;asset/static&#8217;) }}/bootstrap/css/bootstrap.min.css&#8221;&gt;
</p>
<p><strong>    @yield(&#8216;css&#8217;)</strong>
</p>
<p>
  &lt;/head&gt;
</p>
<p>
  &lt;body&gt;
</p>
<p>
  &lt;div class=&#8221;navbar navbar-default&#8221;&gt;
</p>
<p>
      &lt;div class=&#8221;container&#8221;&gt;
</p>
<p>
          &lt;div class=&#8221;navbar-header&#8221;&gt;
</p>
<p>
              &lt;a href=&#8221;/&#8221; class=&#8221;navbar-brand&#8221;&gt;首页&lt;/a&gt;
</p>
<p>
              &lt;button type=&#8221;button&#8221; class=&#8221;navbar-toggle collapsed&#8221; data-toggle=&#8221;collapse&#8221; data-target=&#8221;#menu&#8221; aria-expanded=&#8221;false&#8221;&gt;
</p>
<p>
                  &lt;span class=&#8221;sr-only&#8221;&gt;菜单折叠&lt;/span&gt;
</p>
<p>
                  &lt;span class=&#8221;icon-bar&#8221;&gt;&lt;/span&gt;
</p>
<p>
                  &lt;span class=&#8221;icon-bar&#8221;&gt;&lt;/span&gt;
</p>
<p>
                  &lt;span class=&#8221;icon-bar&#8221;&gt;&lt;/span&gt;
</p>
<p>
              &lt;/button&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
          &lt;div class=&#8221;collapse navbar-collapse&#8221; id=&#8221;menu&#8221;&gt;
</p>
<p>
              &lt;ul class=&#8221;nav navbar-nav&#8221;&gt;
</p>
<p>
                  &lt;li class=&#8221;active&#8221;&gt;&lt;a href=&#8221;/&#8221;&gt;开发&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                  &lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;列表&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                  &lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;头条&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                  &lt;li class=&#8221;dropdown&#8221;&gt;
</p>
<p>
                      &lt;a href=&#8221;#&#8221; class=&#8221;dropdown-toggle&#8221; data-toggle=&#8221;dropdown&#8221;&gt;资讯 &lt;span class=&#8221;caret&#8221;&gt;&lt;/span&gt;&lt;/a&gt;
</p>
<p>
                      &lt;ul class=&#8221;dropdown-menu&#8221;&gt;
</p>
<p>
                          &lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;学习一&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                          &lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;学习二&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                          &lt;li class=&#8221;divider&#8221;&gt;&lt;/li&gt;
</p>
<p>
                          &lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;技术学习&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                          &lt;li class=&#8221;divider&#8221;&gt;&lt;/li&gt;
</p>
<p>
                          &lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;jq学习&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                      &lt;/ul&gt;
</p>
<p>
                  &lt;/li&gt;
</p>
<p>
              &lt;/ul&gt;
</p>
<p>
              &lt;form class=&#8221;navbar-form navbar-left&#8221;&gt;
</p>
<p>
                  &lt;div class=&#8221;form-group&#8221;&gt;
</p>
<p>
                      &lt;input type=&#8221;text&#8221; class=&#8221;form-control&#8221; placeholder=&#8221;Search&#8230;&#8221;&gt;
</p>
<p>
                  &lt;/div&gt;
</p>
<p>
                  &lt;button type=&#8221;submit&#8221; class=&#8221;btn btn-default&#8221;&gt;搜索&lt;/button&gt;
</p>
<p>
              &lt;/form&gt;
</p>
<p>
              &lt;ul class=&#8221;nav navbar-nav navbar-right&#8221;&gt;
</p>
<p>
                  &lt;li&gt;&lt;a href=&#8221;./login.html&#8221;&gt;登录&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                  &lt;li&gt;&lt;a href=&#8221;./register.html&#8221;&gt;注册&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                  &lt;li class=&#8221;dropdown&#8221;&gt;
</p>
<p>
                      &lt;a href=&#8221;#&#8221; class=&#8221;dropdown-toggle&#8221; data-toggle=&#8221;dropdown&#8221;&gt;相关&lt;span class=&#8221;caret&#8221;&gt;&lt;/span&gt;&lt;/a&gt;
</p>
<p>
                      &lt;ul class=&#8221;dropdown-menu&#8221;&gt;
</p>
<p>
                          &lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;系列一&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                          &lt;li class=&#8221;divider&#8221;&gt;&lt;/li&gt;
</p>
<p>
                          &lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;系列二&lt;/a&gt;&lt;/li&gt;
</p>
<p>
                      &lt;/ul&gt;
</p>
<p>
                  &lt;/li&gt;
</p>
<p>
              &lt;/ul&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
  &lt;/div&gt;
</p>
<p>
  &lt;!&#8211; 头部 &#8211;&gt;
</p>
<p>
  &lt;div class=&#8221;jumbotron jump&#8221;&gt;
</p>
<p>
      &lt;div class=&#8221;container&#8221;&gt;
</p>
<p><strong>        &lt;h2&gt;@yield(&#8216;title&#8217;)&lt;/h2&gt;</strong>
</p>
<p>
          &lt;p&gt; 玩转- laravel&lt;/p&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
  &lt;/div&gt;
</p>
<p><strong>&lt;!&#8211; 中间内容区局 &#8211;&gt;</strong>
</p>
<p><strong>&lt;div class=&#8221;container&#8221;&gt;</strong>
</p>
<p><strong>    @yield(&#8216;main&#8217;)</strong>
</p>
<p><strong>&lt;/div&gt;</strong>
</p>
<p>
  &lt;!&#8211; 尾部 &#8211;&gt;
</p>
<p>
  &lt;div class=&#8221;jumbotron&#8221; style=&#8221;margin:0;&#8221;&gt;
</p>
<p>
      &lt;div class=&#8221;container&#8221;&gt;
</p>
<p>
          &lt;span&gt;  @2017 laravel&lt;/span&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
  &lt;/div&gt;
</p>
<p>
  &lt;!&#8211; jQuery 文件 &#8211;&gt;
</p>
<p>
  &lt;script src=&#8221;{{ asset(&#8216;asset/static&#8217;) }}/jquery/jquery.min.js&#8221;&gt;&lt;/script&gt;
</p>
<p>
  &lt;!&#8211; Bootstrap JavaScript 文件 &#8211;&gt;
</p>
<p>
  &lt;script src=&#8221;{{ asset(&#8216;asset/static&#8217;) }}/bootstrap/js/bootstrap.min.js&#8221;&gt;&lt;/script&gt;
</p>
<p>
  &lt;link href=&#8221;https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert.min.css&#8221; rel=&#8221;stylesheet&#8221;&gt;
</p>
<p>
  &lt;script src=&#8221;https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert-dev.js&#8221;&gt;&lt;/script&gt;
</p>
<p>
  &lt;script type=&#8221;text/javascript&#8221;&gt;
</p>
<p>
      @if (Session::has(&#8216;tips&#8217;))
</p>
<p>
      swal(&#8220;{{ Session::get(&#8216;tips&#8217;) }}！&#8221;, &#8220;操作提示！&#8221;,&#8221;{{ Session::get(&#8216;state&#8217;) }}&#8221;)
</p>
<p>
      @endif
</p>
<p>
  &lt;/script&gt;
</p>
<p>
  &lt;/body&gt;
</p>
<p>
  &lt;/html&gt;
</p>
<h3>resources\views\layouts\form.blade.php</h3>
<p>
  &lt;form  action=&#8221;{{ url(&#8216;student/add&#8217;) }}&#8221; class=&#8221;form-horizontal&#8221; method=&#8221;post&#8221;&gt;
</p>
<p>
      {{ csrf_field() }}
</p>
<p>
      &lt;div class=&#8221;form-group&#8221;&gt;
</p>
<p>
          &lt;label for=&#8221;name&#8221; class=&#8221;col-sm-2 control-label&#8221;&gt;姓名&lt;/label&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-5&#8243;&gt;
</p>
<p>
              &lt;input type=&#8221;text&#8221; name=&#8221;uname&#8221; class=&#8221;form-control&#8221; id=&#8221;name&#8221; placeholder=&#8221;请输入学生姓名&#8221;&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-5&#8243;&gt;
</p>
<p>
              &lt;p class=&#8221;form-control-static text-danger&#8221;&gt;姓名不能为空&lt;/p&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
      &lt;div class=&#8221;form-group&#8221;&gt;
</p>
<p>
          &lt;label for=&#8221;age&#8221; class=&#8221;col-sm-2 control-label&#8221;&gt;密码&lt;/label&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-5&#8243;&gt;
</p>
<p>
              &lt;input type=&#8221;text&#8221; name=&#8221;pwd&#8221; class=&#8221;form-control&#8221; id=&#8221;age&#8221; placeholder=&#8221;请输入学生年龄&#8221;&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-5&#8243;&gt;
</p>
<p>
              &lt;p class=&#8221;form-control-static text-danger&#8221;&gt;密码不能为空&lt;/p&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
      &lt;div class=&#8221;form-group&#8221;&gt;
</p>
<p>
          &lt;label for=&#8221;age&#8221; class=&#8221;col-sm-2 control-label&#8221;&gt;年龄&lt;/label&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-5&#8243;&gt;
</p>
<p>
              &lt;input type=&#8221;text&#8221; name=&#8221;age&#8221; class=&#8221;form-control&#8221; id=&#8221;age&#8221; placeholder=&#8221;请输入学生年龄&#8221;&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-5&#8243;&gt;
</p>
<p>
              &lt;p class=&#8221;form-control-static text-danger&#8221;&gt;年龄只能为整数&lt;/p&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
      &lt;div class=&#8221;form-group&#8221;&gt;
</p>
<p>
          &lt;label class=&#8221;col-sm-2 control-label&#8221;&gt;性别&lt;/label&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-5&#8243;&gt;
</p>
<p>
              &lt;label class=&#8221;radio-inline&#8221;&gt;
</p>
<p>
                  &lt;input type=&#8221;radio&#8221; name=&#8221;sex&#8221; value=&#8221;1&#8243;&gt; 男
</p>
<p>
              &lt;/label&gt;
</p>
<p>
              &lt;label class=&#8221;radio-inline&#8221;&gt;
</p>
<p>
                  &lt;input type=&#8221;radio&#8221; name=&#8221;sex&#8221; value=&#8221;2&#8243;&gt; 女
</p>
<p>
              &lt;/label&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-5&#8243;&gt;
</p>
<p>
              &lt;p class=&#8221;form-control-static text-danger&#8221;&gt;请选择性别&lt;/p&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
      &lt;div class=&#8221;form-group&#8221;&gt;
</p>
<p>
          &lt;div class=&#8221;col-sm-offset-2 col-sm-10&#8243;&gt;
</p>
<p>
              &lt;button type=&#8221;submit&#8221; class=&#8221;btn btn-primary&#8221;&gt;提交&lt;/button&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
  &lt;/form&gt;
</p>
<h3>resources\views\student\add.blade.php</h3>
<p>
  @extends(&#8216;student.layout.common&#8217;)
</p>
<p>
  @section(&#8216;title&#8217;, &#8216;添加&#8217;)
</p>
<p>
  @section(&#8216;css&#8217;)
</p>
<p>
      &lt;link rel=&#8221;stylesheet&#8221; href=&#8221;{{ asset(&#8216;asset/static&#8217;) }}/bootstrap/css/form.css&#8221;&gt;
</p>
<p>
  @endsection
</p>
<p><strong>@section(&#8216;main&#8217;)</strong>
</p>
<p>
      &lt;div class=&#8221;row&#8221;&gt;
</p>
<p>
          &lt;!&#8211; 左侧菜单区域   &#8211;&gt;
</p>
<p>
          &lt;div class=&#8221;col-md-3&#8243;&gt;
</p>
<p>
              &lt;div class=&#8221;list-group&#8221;&gt;
</p>
<p>
                  &lt;a href=&#8221;./index.html&#8221; class=&#8221;list-group-item &#8220;&gt;学生列表&lt;/a&gt;
</p>
<p>
                  &lt;a href=&#8221;./form.html&#8221; class=&#8221;list-group-item active&#8221;&gt;新增学生&lt;/a&gt;
</p>
<p>
              &lt;/div&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
          &lt;!&#8211; 右侧内容区域 &#8211;&gt;
</p>
<p>
          &lt;div class=&#8221;col-md-9&#8243;&gt;
</p>
<p>
              &lt;!&#8211; 所有的错误提示 &#8211;&gt;
</p>
<p>
              &lt;div class=&#8221;alert alert-danger&#8221;&gt;
</p>
<p>
                  &lt;ul&gt;
</p>
<p>
                      &lt;li&gt;姓名不能为空&lt;/li&gt;
</p>
<p>
                      &lt;li&gt;年龄只能为整数&lt;/li&gt;
</p>
<p>
                      &lt;li&gt;请选择性别&lt;/li&gt;
</p>
<p>
                  &lt;/ul&gt;
</p>
<p>
              &lt;/div&gt;
</p>
<p>
              &lt;!&#8211; 自定义内容区域 &#8211;&gt;
</p>
<p>
              &lt;div class=&#8221;panel panel-default&#8221;&gt;
</p>
<p>
                  &lt;div class=&#8221;panel-heading&#8221;&gt;新增学生&lt;/div&gt;
</p>
<p>
                  &lt;div class=&#8221;panel-body&#8221;&gt;
</p>
<p>
                      @include(&#8216;student.layout.form&#8217;)
</p>
<p>
                  &lt;/div&gt;
</p>
<p>
              &lt;/div&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p><strong>@endsection</strong>
</p>
<h3>resources\views\student\index.blade.php</h3>
<p>
  @extends(&#8216;student.layout.common&#8217;)
</p>
<p>
  @section(&#8216;title&#8217;, &#8216;首页&#8217;)
</p>
<p>
  @section(&#8216;css&#8217;)
</p>
<p>
      &lt;link rel=&#8221;stylesheet&#8221; href=&#8221;{{ asset(&#8216;asset/static&#8217;) }}/bootstrap/css/index.css&#8221;&gt;
</p>
<p>
  @endsection
</p>
<p>
  @section(&#8216;main&#8217;)
</p>
<p>
      &lt;div class=&#8221;row&#8221;&gt;
</p>
<p>
          &lt;!&#8211; 左侧菜单区域   &#8211;&gt;
</p>
<p>
          &lt;div class=&#8221;col-md-3&#8243;&gt;
</p>
<p>
              &lt;div class=&#8221;list-group&#8221;&gt;
</p>
<p>
                  &lt;a href=&#8221;index.blade.php&#8221; class=&#8221;list-group-item active&#8221;&gt;学生列表&lt;/a&gt;
</p>
<p>
                  &lt;a href=&#8221;./form.html&#8221; class=&#8221;list-group-item&#8221;&gt;新增学生&lt;/a&gt;
</p>
<p>
              &lt;/div&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
          &lt;!&#8211; 右侧内容区域 &#8211;&gt;
</p>
<p>
          &lt;div class=&#8221;col-md-9&#8243;&gt;
</p>
<p>
              &lt;!&#8211; 成功提示框 &#8211;&gt;
</p>
<p>
              &lt;div class=&#8221;alert alert-success alert-dismissible&#8221; role=&#8221;alert&#8221;&gt;
</p>
<p>
                  &lt;button type=&#8221;button&#8221; class=&#8221;close&#8221; data-dismiss=&#8221;alert&#8221; aria-label=&#8221;Close&#8221;&gt;
</p>
<p>
                      &lt;span aria-hidden=&#8221;true&#8221;&gt;&amp;times;&lt;/span&gt;
</p>
<p>
                  &lt;/button&gt;
</p>
<p>
                  &lt;strong&gt;成功!&lt;/strong&gt; 操作成功提示！
</p>
<p>
              &lt;/div&gt;
</p>
<p>
              &lt;!&#8211; 失败提示框 &#8211;&gt;
</p>
<p>
              &lt;div class=&#8221;alert alert-danger alert-dismissible&#8221; role=&#8221;alert&#8221;&gt;
</p>
<p>
                  &lt;button type=&#8221;button&#8221; class=&#8221;close&#8221; data-dismiss=&#8221;alert&#8221; aria-label=&#8221;Close&#8221;&gt;
</p>
<p>
                      &lt;span aria-hidden=&#8221;true&#8221;&gt;&amp;times;&lt;/span&gt;
</p>
<p>
                  &lt;/button&gt;
</p>
<p>
                  &lt;strong&gt;失败!&lt;/strong&gt; 操作失败提示！
</p>
<p>
              &lt;/div&gt;
</p>
<p>
              &lt;!&#8211; 自定义内容区域 &#8211;&gt;
</p>
<p>
              &lt;div class=&#8221;panel panel-default&#8221;&gt;
</p>
<p>
                  &lt;div class=&#8221;panel-heading&#8221;&gt;学生列表&lt;/div&gt;
</p>
<p>
                  &lt;table class=&#8221;table table-striped table-hover table-responsive&#8221;&gt;
</p>
<p>
                      &lt;thead&gt;
</p>
<p>
                      &lt;tr&gt;
</p>
<p>
                          &lt;th&gt;ID&lt;/th&gt;
</p>
<p>
                          &lt;th&gt;姓名&lt;/th&gt;
</p>
<p>
                          &lt;th&gt;年龄&lt;/th&gt;
</p>
<p>
                          &lt;th&gt;性别&lt;/th&gt;
</p>
<p>
                          &lt;th&gt;添加时间&lt;/th&gt;
</p>
<p>
                          &lt;th width=&#8221;120&#8243;&gt;操作&lt;/th&gt;
</p>
<p>
                      &lt;/tr&gt;
</p>
<p>
                      &lt;/thead&gt;
</p>
<p>
                      &lt;tbody&gt;
</p>
<p>
                      @foreach ($student as $item)
</p>
<p>
                          &lt;tr&gt;
</p>
<p>
                              &lt;th scope=&#8221;row&#8221;&gt;{{ $item-&gt;id }}&lt;/th&gt;
</p>
<p>
                              &lt;td&gt;{{ $item-&gt;uname }}&lt;/td&gt;
</p>
<p>
                              &lt;td&gt;{{ $item-&gt;age }}&lt;/td&gt;
</p>
<p>
                              &lt;td&gt;
</p>
<p>
                                  @if ($item-&gt;sex === 1)
</p>
<p>
                                      公
</p>
<p>
                                  @else
</p>
<p>
                                      母
</p>
<p>
                                  @endif
</p>
<p>
                              &lt;/td&gt;
</p>
<p>
                              &lt;td&gt;{{ $item-&gt;created_at }}&lt;/td&gt;
</p>
<p>
                              &lt;td&gt;
</p>
<p>
                                  &lt;a href=&#8221;&#8221;&gt;详情&lt;/a&gt;
</p>
<p>
                                  &lt;a href=&#8221;&#8221;&gt;修改&lt;/a&gt;
</p>
<p>
                                  &lt;a href=&#8221;&#8221;&gt;删除&lt;/a&gt;
</p>
<p>
                              &lt;/td&gt;
</p>
<p>
                          &lt;/tr&gt;
</p>
<p>
                      @endforeach
</p>
<p>
                      &lt;/tbody&gt;
</p>
<p>
                  &lt;/table&gt;
</p>
<p>
              &lt;/div&gt;
</p>
<p>
              &lt;!&#8211; 分页  &#8211;&gt;
</p>
<p>
              &lt;div style=&#8221;text-align: right;&#8221;&gt;
</p>
<p>
                  {{ $student-&gt;links() }}
</p>
<p>
                  {{&#8211;&lt;ul class=&#8221;pagination pull-right&#8221;&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;a href=&#8221;#&#8221; aria-label=&#8221;Previous&#8221;&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;span aria-hidden=&#8221;true&#8221;&gt;&amp;laquo;&lt;/span&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;/a&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;/li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;li class=&#8221;active&#8221;&gt;&lt;a href=&#8221;#&#8221;&gt;1&lt;/a&gt;&lt;/li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;2&lt;/a&gt;&lt;/li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;3&lt;/a&gt;&lt;/li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;4&lt;/a&gt;&lt;/li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;li&gt;&lt;a href=&#8221;#&#8221;&gt;5&lt;/a&gt;&lt;/li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;a href=&#8221;#&#8221; aria-label=&#8221;Next&#8221;&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;span aria-hidden=&#8221;true&#8221;&gt;&amp;raquo;&lt;/span&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;/a&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;/li&gt;&#8211;}}
</p>
<p>
                  {{&#8211;&lt;/ul&gt;&#8211;}}
</p>
<p>
              &lt;/div&gt;
</p>
<p>
          &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
  @endsection
</p>
<h1>二、会话技术</h1>
<h2>1、session会话</h2>
<h3>1）语法</h3>
<ul>
<li><strong>位置：</strong>config\session.php存储了session的相关配置说明（注：非php.ini）
  </li>
</ul>
<p>
  脚下留心
</p>
<p><img decoding="async" width="995" height="368" src="/wp-content/uploads/2018/05/word-image-5531.png" class="wp-image-6081" srcset="/wp-content/uploads/2018/05/word-image-5531.png 995w, /wp-content/uploads/2018/05/word-image-5531-300x111.png 300w, /wp-content/uploads/2018/05/word-image-5531-768x284.png 768w" sizes="(max-width: 995px) 100vw, 995px" /></p>
<ul>
<li><strong>说明：Laravel中支持三种方式操作session</strong>
  </li>
<li>
    Http Request类的session方法
  </li>
</ul>
<p>
  设置：    $request-&gt;session()-&gt;put（键，值）
</p>
<p>
  获取指定：$request-&gt;session()-&gt;get（键 [，默认值]）
</p>
<p>
  获取所有：$request-&gt;session()-&gt;all（）
</p>
<p>
  判断：    $request-&gt;session()-&gt;has(键);
</p>
<ul>
<li>
    session辅助函数
  </li>
</ul>
<p>
  设置：session（[键1=&gt;值1,&#8230;,键n=&gt;值n]）
</p>
<p>
  获取：session（键）
</p>
<ul>
<li>
    Session facade门面 （通过Session类调用静态方法）
  </li>
</ul>
<p>
  设置：			   Session::put（键，值）;
</p>
<p>
  获取指定：		   Session::get（键 [，默认值]）
</p>
<p>
  获取所有：		   Session::all（）
</p>
<p>
  删除指定：	 	   Session::forget(key)
</p>
<p>
  判断：		  	   Session::has(key)
</p>
<p>
  删除所有：  	   Session::flush()
</p>
<p>
  压入session数组：Session::push(key, value)
</p>
<p>
  获取后删除：	   Session::pull(key)
</p>
<p>
  闪存：			   Session::flash(key, value)
</p>
<h3>2）练习</h3>
<p>
  设置
</p>
<p>
  获取全部
</p>
<p>
  压入
</p>
<p>
  获取指定
</p>
<p>
  获取全部
</p>
<p>
  闪存
</p>
<p>
  查看
</p>
<p><img decoding="async" width="686" height="578" src="/wp-content/uploads/2018/05/word-image-5532.png" class="wp-image-6082" srcset="/wp-content/uploads/2018/05/word-image-5532.png 686w, /wp-content/uploads/2018/05/word-image-5532-300x253.png 300w" sizes="(max-width: 686px) 100vw, 686px" /></p>
<h2>2、cookie会话</h2>
<h3>1）语法</h3>
<ul>
<li>
    设置：Cookie::make（键，值）
  </li>
<li>
    设置：Cookie::forever（键，键）							   #理论上的永久设置
  </li>
<li>
    获取：Cookie::get（键）
  </li>
</ul>
<p>
  Laravel中必须通过withCookie使响应头中携带cookie信息
</p>
<h3>2）练习</h3>
<p>
  设置cookie
</p>
<p><img loading="lazy" decoding="async" width="1189" height="433" src="/wp-content/uploads/2018/05/word-image-5533.png" class="wp-image-6083" srcset="/wp-content/uploads/2018/05/word-image-5533.png 1189w, /wp-content/uploads/2018/05/word-image-5533-300x109.png 300w, /wp-content/uploads/2018/05/word-image-5533-768x280.png 768w, /wp-content/uploads/2018/05/word-image-5533-1024x373.png 1024w" sizes="(max-width: 1189px) 100vw, 1189px" /></p>
<p>
  控制器
</p>
<p><img loading="lazy" decoding="async" width="1227" height="661" src="/wp-content/uploads/2018/05/word-image-5534.png" class="wp-image-6084" srcset="/wp-content/uploads/2018/05/word-image-5534.png 1227w, /wp-content/uploads/2018/05/word-image-5534-300x162.png 300w, /wp-content/uploads/2018/05/word-image-5534-768x414.png 768w, /wp-content/uploads/2018/05/word-image-5534-1024x552.png 1024w" sizes="(max-width: 1227px) 100vw, 1227px" /></p>
<h1>三、中间件（middleware）</h1>
<h2>概念</h2>
<ul>
<li>
      中间件：就是将HTTP请求交给控制器方法处理前的过滤层
  </li>
<li>
    简单理解：
  </li>
</ul>
<p><img loading="lazy" decoding="async" width="1033" height="467" src="/wp-content/uploads/2018/05/word-image-5535.png" class="wp-image-6085" srcset="/wp-content/uploads/2018/05/word-image-5535.png 1033w, /wp-content/uploads/2018/05/word-image-5535-300x136.png 300w, /wp-content/uploads/2018/05/word-image-5535-768x347.png 768w, /wp-content/uploads/2018/05/word-image-5535-1024x463.png 1024w" sizes="(max-width: 1033px) 100vw, 1033px" /></p>
<h2>语法</h2>
<ul>
<li>
    语法：php artisan make:middleware 中间件名称
  </li>
<li>
    位置：Http\Middleware\中间件名称
  </li>
<li>
    使用步骤
  </li>
<li>
    步骤1：创建中间件，并书写过滤代码
  </li>
<li>
    步骤2：注册激活中间件（app\Http\Kernel.php）
  </li>
<li>
    步骤3：路由声明使用哪个中间件过滤
  </li>
</ul>
<p>
  Route::HTTP请求类型(路径，闭包函数或控制器方法)-&gt;middleware（中间件名称）
</p>
<p>
  Route::group([&#8216;namespace&#8217;=&gt;, &#8216;prefix&#8217;=&gt;&#8221;, &#8216;middleware&#8217;=&gt;中间件名称], function(){
</p>
<p>
  })
</p>
<h2>练习（需求：访问 /test时闭包函数输出111，中间件输出222）</h2>
<p>
  步骤1：创建中间件并书写逻辑代码
</p>
<p><img loading="lazy" decoding="async" width="1341" height="573" src="/wp-content/uploads/2018/05/word-image-5536.png" class="wp-image-6086" srcset="/wp-content/uploads/2018/05/word-image-5536.png 1341w, /wp-content/uploads/2018/05/word-image-5536-300x128.png 300w, /wp-content/uploads/2018/05/word-image-5536-768x328.png 768w, /wp-content/uploads/2018/05/word-image-5536-1024x438.png 1024w" sizes="(max-width: 1341px) 100vw, 1341px" /></p>
<p>
  步骤2；激活
</p>
<p><img loading="lazy" decoding="async" width="1212" height="422" src="/wp-content/uploads/2018/05/word-image-5537.png" class="wp-image-6087" srcset="/wp-content/uploads/2018/05/word-image-5537.png 1212w, /wp-content/uploads/2018/05/word-image-5537-300x104.png 300w, /wp-content/uploads/2018/05/word-image-5537-768x267.png 768w, /wp-content/uploads/2018/05/word-image-5537-1024x357.png 1024w" sizes="(max-width: 1212px) 100vw, 1212px" /></p>
<p>
  步骤3：路由使用
</p>
<p><img loading="lazy" decoding="async" width="530" height="214" src="/wp-content/uploads/2018/05/word-image-5538.png" class="wp-image-6088" srcset="/wp-content/uploads/2018/05/word-image-5538.png 530w, /wp-content/uploads/2018/05/word-image-5538-300x121.png 300w" sizes="(max-width: 530px) 100vw, 530px" /></p>
<h2>防翻墙</h2>
<p>
  步骤1：保存用户信息到session中
</p>
<p><img loading="lazy" decoding="async" width="978" height="448" src="/wp-content/uploads/2018/05/word-image-5539.png" class="wp-image-6089" srcset="/wp-content/uploads/2018/05/word-image-5539.png 978w, /wp-content/uploads/2018/05/word-image-5539-300x137.png 300w, /wp-content/uploads/2018/05/word-image-5539-768x352.png 768w" sizes="(max-width: 978px) 100vw, 978px" /></p>
<p>
  步骤2：创建中间件
</p>
<p><img loading="lazy" decoding="async" width="1323" height="579" src="/wp-content/uploads/2018/05/word-image-5540.png" class="wp-image-6090" srcset="/wp-content/uploads/2018/05/word-image-5540.png 1323w, /wp-content/uploads/2018/05/word-image-5540-300x131.png 300w, /wp-content/uploads/2018/05/word-image-5540-768x336.png 768w, /wp-content/uploads/2018/05/word-image-5540-1024x448.png 1024w" sizes="(max-width: 1323px) 100vw, 1323px" /></p>
<p>
  //判断用户是否登录
</p>
<p>
  if (!Session::has(&#8216;userinfo&#8217;)) {
</p>
<p>
      return redirect(&#8216;/student/login&#8217;)-&gt;with([&#8216;state&#8217;=&gt;&#8217;error&#8217;, &#8216;tips&#8217;=&gt;&#8217;犊子，去登录&#8217;]);
</p>
<p>
  }
</p>
<p>
  步骤3：激活中间件
</p>
<p><img loading="lazy" decoding="async" width="1073" height="475" src="/wp-content/uploads/2018/05/word-image-5541.png" class="wp-image-6091" srcset="/wp-content/uploads/2018/05/word-image-5541.png 1073w, /wp-content/uploads/2018/05/word-image-5541-300x133.png 300w, /wp-content/uploads/2018/05/word-image-5541-768x340.png 768w, /wp-content/uploads/2018/05/word-image-5541-1024x453.png 1024w" sizes="(max-width: 1073px) 100vw, 1073px" /></p>
<p>
  步骤4：使用
</p>
<p><img loading="lazy" decoding="async" width="1278" height="592" src="/wp-content/uploads/2018/05/word-image-5542.png" class="wp-image-6092" srcset="/wp-content/uploads/2018/05/word-image-5542.png 1278w, /wp-content/uploads/2018/05/word-image-5542-300x139.png 300w, /wp-content/uploads/2018/05/word-image-5542-768x356.png 768w, /wp-content/uploads/2018/05/word-image-5542-1024x474.png 1024w" sizes="(max-width: 1278px) 100vw, 1278px" /></p>
<p>
  步骤5：修改laravel的session机制
</p>
<p><img loading="lazy" decoding="async" width="1041" height="372" src="/wp-content/uploads/2018/05/word-image-5543.png" class="wp-image-6093" srcset="/wp-content/uploads/2018/05/word-image-5543.png 1041w, /wp-content/uploads/2018/05/word-image-5543-300x107.png 300w, /wp-content/uploads/2018/05/word-image-5543-768x274.png 768w, /wp-content/uploads/2018/05/word-image-5543-1024x366.png 1024w" sizes="(max-width: 1041px) 100vw, 1041px" /></p>
<h1><a id="post-6079-_Toc487990952"></a>四、Laravel控制器数据验证</h1>
<h2>1、概念</h2>
<h3>1）说明</h3>
<p>
  为了保证项目安全除前段必须验证外后端也必须进行数据验证，Laravel提供了一套完善的验证机制。
</p>
<h3>2）分类（Laravel提供了三种方式验证）</h3>
<ul>
<li>
    控制器直接使用validate方法
  </li>
<li>
    单独创建验证类
  </li>
<li>
    使用validator门面验证
  </li>
</ul>
<p>
  验证规则
</p>
<p>
  required: 不能为空
</p>
<p>
  max:255最长255个字符，
</p>
<p>
  min:1最少1个字符
</p>
<p>
  email:验证邮箱是否合法
</p>
<p>
  confirmed:验证两个字段是否相同，如果验证的字段是password,则必须输入一个与之匹配的password_confirmation字段
</p>
<p>
  integer:验证字段必须是整型
</p>
<p>
  ip:验证字段必须是IP地址
</p>
<p>
  numeric 验证字段必须是数值
</p>
<p>
  max:value 验证字段必须小于等于最大值，和字符串，数值，文件字段的size规则一起使用。
</p>
<p>
  min:value 验证字段的最小值，对字符串、数值、文件字段而言，和size规则使用方式一致。
</p>
<p>
  size:value 验证字段必须有和给定值value想匹配的尺寸，对字符串而言，value是相应的字符数目，对数值而言，value是给定整型值；对文件而言，value是相应的文件字节数。
</p>
<p>
  string 验证字段必须是字符串
</p>
<p>
  unique:表名，字段，需要排除的ID
</p>
<p>
  验证规则手册：<a href="http://laravelacademy.org/post/6768.html#toc_17">http://laravelacademy.org/post/6768.html#toc_17</a>
</p>
<p>
  多学一招：多个验证规则可以通过 &#8220;|&#8221; 字符进行隔开
</p>
<h2>方法1：控制器使用validate方法</h2>
<h3>语法</h3>
<ul>
<li>
    $this-&gt;validate（$request，验证规则 [，提示信息]）
  </li>
</ul>
<h3>练习</h3>
<p>
  控制器
</p>
<p><img loading="lazy" decoding="async" width="985" height="555" src="/wp-content/uploads/2018/05/word-image-5544.png" class="wp-image-6094" srcset="/wp-content/uploads/2018/05/word-image-5544.png 985w, /wp-content/uploads/2018/05/word-image-5544-300x169.png 300w, /wp-content/uploads/2018/05/word-image-5544-768x433.png 768w" sizes="(max-width: 985px) 100vw, 985px" /></p>
<p>
  //数据验证
</p>
<p>
  $this-&gt;validate($request, [
</p>
<p>
      &#8216;uname&#8217; =&gt; &#8216;required&#8217;,
</p>
<p>
      &#8216;pwd&#8217; =&gt; &#8216;required&#8217;,
</p>
<p>
      &#8216;age&#8217; =&gt; &#8216;required|integer&#8217;,
</p>
<p>
      &#8216;sex&#8217; =&gt; &#8216;required|integer&#8217;,
</p>
<p>
  ], [
</p>
<p>
      &#8216;age.integer&#8217; =&gt; &#8216;年龄必须是整型&#8217;,
</p>
<p>
      &#8216;age.required&#8217; =&gt; &#8216;年龄必须&#8217;,
</p>
<p>
  ]);
</p>
<p>
  视图
</p>
<p><img loading="lazy" decoding="async" width="989" height="434" src="/wp-content/uploads/2018/05/word-image-5545.png" class="wp-image-6095" srcset="/wp-content/uploads/2018/05/word-image-5545.png 989w, /wp-content/uploads/2018/05/word-image-5545-300x132.png 300w, /wp-content/uploads/2018/05/word-image-5545-768x337.png 768w" sizes="(max-width: 989px) 100vw, 989px" /></p>
<p>
  @if (count($errors) &gt; 0)
</p>
<p>
      &lt;div class=&#8221;alert alert-danger&#8221;&gt;
</p>
<p>
          &lt;ul&gt;
</p>
<p>
              @foreach ($errors-&gt;all() as $error)
</p>
<p>
                  &lt;li&gt;{{ $error }}&lt;/li&gt;
</p>
<p>
              @endforeach
</p>
<p>
          &lt;/ul&gt;
</p>
<p>
      &lt;/div&gt;
</p>
<p>
  @endif
</p>
<p>
  多学一招：验证提示信息汉化
</p>
<ol>
<li>
  下载：https://github.com/caouecs/Laravel-lang
</li>
<li>
  将下载的汉化包放到项目中
</li>
</ol>
<p><img loading="lazy" decoding="async" width="782" height="395" src="/wp-content/uploads/2018/05/word-image-5546.png" class="wp-image-6096" srcset="/wp-content/uploads/2018/05/word-image-5546.png 782w, /wp-content/uploads/2018/05/word-image-5546-300x152.png 300w, /wp-content/uploads/2018/05/word-image-5546-768x388.png 768w" sizes="(max-width: 782px) 100vw, 782px" /></p>
<ol>
<li>
  修改config\app.php
</li>
</ol>
<p><img loading="lazy" decoding="async" width="789" height="210" src="/wp-content/uploads/2018/05/word-image-5547.png" class="wp-image-6097" srcset="/wp-content/uploads/2018/05/word-image-5547.png 789w, /wp-content/uploads/2018/05/word-image-5547-300x80.png 300w, /wp-content/uploads/2018/05/word-image-5547-768x204.png 768w" sizes="(max-width: 789px) 100vw, 789px" /></p>
<p>
  4）重新提交测试即可
</p>
<h2>方法2：单独创建验证类</h2>
<h3>语法</h3>
<ul>
<li>
    语法：php artisan make:request 验证类名称
  </li>
<li>
    位置：app\Http\Requests
  </li>
</ul>
<h3>2）练习</h3>
<p>
  步骤1：创建验证类并书写规则
</p>
<p><img loading="lazy" decoding="async" width="1063" height="624" src="/wp-content/uploads/2018/05/word-image-5548.png" class="wp-image-6098" srcset="/wp-content/uploads/2018/05/word-image-5548.png 1063w, /wp-content/uploads/2018/05/word-image-5548-300x176.png 300w, /wp-content/uploads/2018/05/word-image-5548-768x451.png 768w, /wp-content/uploads/2018/05/word-image-5548-1024x601.png 1024w" sizes="(max-width: 1063px) 100vw, 1063px" /></p>
<p>
  &lt;?php
</p>
<p>
  namespace App\Http\Requests;
</p>
<p>
  use Illuminate\Foundation\Http\FormRequest;
</p>
<p>
  class CheckStudent extends FormRequest
</p>
<p>
  {
</p>
<p>
      public function authorize()
</p>
<p>
      {
</p>
<p>
          return true; //开启验证
</p>
<p>
      }
</p>
<p>
      public function rules()
</p>
<p>
      {
</p>
<p>
          if ($this-&gt;isMethod(&#8216;get&#8217;)) return [];
</p>
<p>
          return [
</p>
<p>
              &#8216;uname&#8217; =&gt; &#8216;required&#8217;,
</p>
<p>
              &#8216;pwd&#8217; =&gt; &#8216;required&#8217;,
</p>
<p>
              &#8216;age&#8217; =&gt; &#8216;required|integer&#8217;,
</p>
<p>
              &#8216;sex&#8217; =&gt; &#8216;required|integer&#8217;,
</p>
<p>
          ];
</p>
<p>
      }
</p>
<p>
      public function messages()
</p>
<p>
      {
</p>
<p>
          return [
</p>
<p>
              &#8216;uname.required&#8217; =&gt; &#8216;用户名有消磁&#8217;
</p>
<p>
          ];
</p>
<p>
      }
</p>
<p>
  }
</p>
<p>
  步骤2：在控制器中使用
</p>
<p><img loading="lazy" decoding="async" width="1050" height="544" src="/wp-content/uploads/2018/05/word-image-5549.png" class="wp-image-6099" srcset="/wp-content/uploads/2018/05/word-image-5549.png 1050w, /wp-content/uploads/2018/05/word-image-5549-300x155.png 300w, /wp-content/uploads/2018/05/word-image-5549-768x398.png 768w, /wp-content/uploads/2018/05/word-image-5549-1024x531.png 1024w" sizes="(max-width: 1050px) 100vw, 1050px" /></p>
<h2>方法3：使用Validator门面验证器（类）</h2>
<h3>1）语法</h3>
<ul>
<li>
    $validator = Validator::make（待验证的数据，验证规则 [，提示信息]）
  </li>
<li>
    $validator-&gt;passes()   		是否成功：成功-true，失败-false
  </li>
<li>
    $validator-&gt;fails()    		是否失败：失败-true，成功-false
  </li>
<li>
    $validator-&gt;messages()     获取错误信息
  </li>
</ul>
<h3>2）练习</h3>
<p><img loading="lazy" decoding="async" width="1206" height="522" src="/wp-content/uploads/2018/05/word-image-5550.png" class="wp-image-6100" srcset="/wp-content/uploads/2018/05/word-image-5550.png 1206w, /wp-content/uploads/2018/05/word-image-5550-300x130.png 300w, /wp-content/uploads/2018/05/word-image-5550-768x332.png 768w, /wp-content/uploads/2018/05/word-image-5550-1024x443.png 1024w" sizes="(max-width: 1206px) 100vw, 1206px" /></p>
<p>
  $validator = Validator::make($request-&gt;all(), [
</p>
<p>
      &#8216;uname&#8217; =&gt; &#8216;required&#8217;,
</p>
<p>
      &#8216;pwd&#8217; =&gt; &#8216;required&#8217;,
</p>
<p>
      &#8216;age&#8217; =&gt; &#8216;required|integer&#8217;,
</p>
<p>
      &#8216;sex&#8217; =&gt; &#8216;required|integer&#8217;,
</p>
<p>
  ]);
</p>
<p>
  if ($validator-&gt;fails()) {
</p>
<p>
      //如果异步请求则响应json    dd($validator-&gt;messages());
</p>
<p>
      return redirect(&#8216;student/add&#8217;)-&gt;withErrors($validator);
</p>
<p>
  }
</p>
<h2>︴显示单个错误</h2>
<p>
  语法：{{ $errors-&gt;first(键) }}
</p>
<p><img loading="lazy" decoding="async" width="1243" height="592" src="/wp-content/uploads/2018/05/word-image-5551.png" class="wp-image-6101" srcset="/wp-content/uploads/2018/05/word-image-5551.png 1243w, /wp-content/uploads/2018/05/word-image-5551-300x143.png 300w, /wp-content/uploads/2018/05/word-image-5551-768x366.png 768w, /wp-content/uploads/2018/05/word-image-5551-1024x488.png 1024w" sizes="(max-width: 1243px) 100vw, 1243px" /></p>
<h1>多表查询【★★★★★★★★★★★★★★】</h1>
<h2>︴测试数据准备</h2>
<p>
  DROP TABLE IF EXISTS `article`;
</p>
<p>
  CREATE TABLE `article` (
</p>
<p>
    `aid` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT &#8216;编号&#8217;,
</p>
<p>
    `title` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT &#8216;用户名&#8217;,
</p>
<p>
    `content` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT &#8216;密码&#8217;,
</p>
<p>
    `uid` int(11) DEFAULT NULL,
</p>
<p>
    PRIMARY KEY (`aid`)
</p>
<p>
  ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
</p>
<p>
  INSERT INTO `article` VALUES (&#8216;1&#8217;, &#8216;文章1&#8217;, &#8216;内容1&#8217;, &#8216;1&#8217;);
</p>
<p>
  INSERT INTO `article` VALUES (&#8216;2&#8217;, &#8216;文章2&#8217;, &#8216;内容2&#8217;, &#8216;1&#8217;);
</p>
<p>
  INSERT INTO `article` VALUES (&#8216;3&#8217;, &#8216;文章3&#8217;, &#8216;内容3&#8217;, &#8216;2&#8217;);
</p>
<p>
  INSERT INTO `article` VALUES (&#8216;4&#8217;, &#8216;文章4&#8217;, &#8216;内容4&#8217;, &#8216;3&#8217;);
</p>
<p>
  DROP TABLE IF EXISTS `student`;
</p>
<p>
  CREATE TABLE `student` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT &#8216;编号&#8217;,
</p>
<p>
    `uname` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT &#8216;用户名&#8217;,
</p>
<p>
    `pwd` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT &#8216;密码&#8217;,
</p>
<p>
    `age` tinyint(3) unsigned NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;年龄&#8217;,
</p>
<p>
    `sex` tinyint(3) unsigned NOT NULL DEFAULT &#8216;1&#8217; COMMENT &#8216;性别：1-男,2-女&#8217;,
</p>
<p>
    `created_at` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;创建于&#8217;,
</p>
<p>
    `updated_at` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;更新于&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=MyISAM AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
</p>
<p>
  INSERT INTO `student` VALUES
</p>
<p>
  (&#8216;1&#8217;, &#8216;test&#8217;, &#8216;$2y$10$0.wXoff3zfaqM4DSMzlzbOEkDfk5ztnJn32vilBAS/WEWSWLcZcrK&#8217;, &#8217;64&#8217;, &#8216;1&#8217;, &#8216;1515226698&#8217;, &#8216;1515226698&#8217;),
</p>
<p>
  (&#8216;2&#8217;, &#8216;Kariane Shields&#8217;, &#8216;$2y$10$xM5YmEL5D3jpomMvqIH/5eS.W.F0o.9oqfNr/FhlmTInRJFEBc9Wi&#8217;, &#8217;94&#8217;, &#8216;2&#8217;, &#8216;1515226713&#8217;, &#8216;1515226713&#8217;),
</p>
<p>
  (&#8216;3&#8217;, &#8216;Prof. Dino Brakus&#8217;, &#8216;$2y$10$hhSBJh69wyAO9wK.JABiEO02rxOzz2MfjHZVbfbLE5RiI7ZRuw6qa&#8217;, &#8216;107&#8217;, &#8216;1&#8217;, &#8216;1515226713&#8217;, &#8216;1515226713&#8217;),
</p>
<p>
  (&#8216;4&#8217;, &#8216;Miss Vivienne Senger V&#8217;, &#8216;$2y$10$CgsLmcYEmYukWKV4i/qAtOHnnnLvUSlJ/NU46.Tke/OuNRgrRES9W&#8217;, &#8217;15&#8217;, &#8216;1&#8217;, &#8216;1515226713&#8217;, &#8216;1515226713&#8217;);
</p>
<h2>1、概念</h2>
<p>
  一对一关系：一篇文章属于一个用户
</p>
<p>
  一对多关系：一个用户有多篇文章
</p>
<h2>查询构建器</h2>
<h3>1）语法</h3>
<p>
  DB::table（表1）
</p>
<p>
  -&gt;leftJoin（表2， &#8216;表1.公共字段&#8217;, &#8216;=&#8217;, &#8216;表2.公共字段&#8217;）
</p>
<p>
  -&gt;get()
</p>
<h3>2）练习</h3>
<p>
  #一对一关系：一遍文章属于一个用户
</p>
<p><img loading="lazy" decoding="async" width="1330" height="643" src="/wp-content/uploads/2018/05/word-image-5552.png" class="wp-image-6102" srcset="/wp-content/uploads/2018/05/word-image-5552.png 1330w, /wp-content/uploads/2018/05/word-image-5552-300x145.png 300w, /wp-content/uploads/2018/05/word-image-5552-768x371.png 768w, /wp-content/uploads/2018/05/word-image-5552-1024x495.png 1024w" sizes="(max-width: 1330px) 100vw, 1330px" /></p>
<p>
  public function test()
</p>
<p>
  {
</p>
<p>
      #一对一关系：一遍文章属于一个用户
</p>
<p>
      $data = DB::table(&#8216;article&#8217;)
</p>
<p>
      -&gt;leftJoin(&#8216;student&#8217;, &#8216;article.uid&#8217;, &#8216;=&#8217;, &#8216;student.id&#8217;)
</p>
<p>
      -&gt;get();
</p>
<p>
      echo &#8216;&lt;pre&gt;&#8217;;
</p>
<p>
      print_r($data);
</p>
<p>
      #一对多关系：一个用户拥有多篇文章
</p>
<p>
  }
</p>
<p>
  #一对多关系：一个用户拥有多篇文章
</p>
<p><img loading="lazy" decoding="async" width="1365" height="512" src="/wp-content/uploads/2018/05/word-image-5553.png" class="wp-image-6103" srcset="/wp-content/uploads/2018/05/word-image-5553.png 1365w, /wp-content/uploads/2018/05/word-image-5553-300x113.png 300w, /wp-content/uploads/2018/05/word-image-5553-768x288.png 768w, /wp-content/uploads/2018/05/word-image-5553-1024x384.png 1024w" sizes="(max-width: 1365px) 100vw, 1365px" /></p>
<p>
  #一对多关系：一个用户拥有多篇文章
</p>
<p>
  $data = DB::table(&#8216;student&#8217;)
</p>
<p>
      -&gt;leftJoin(&#8216;article&#8217;, &#8216;article.uid&#8217;, &#8216;=&#8217;, &#8216;student.id&#8217;)
</p>
<p>
      -&gt;get();
</p>
<p>
  echo &#8216;&lt;pre&gt;&#8217;;
</p>
<p>
  print_r($data);
</p>
<h2>模型</h2>
<h3>1）语法</h3>
<ul>
<li>
    一对一
  </li>
</ul>
<p>
  步骤1：模型定义
</p>
<p>
  public function 推荐写表名()
</p>
<p>
  {
</p>
<p>
  return $this-&gt;hasOne(关联模型，关联模型公共字段, 本模型公共字段);
</p>
<p>
  }
</p>
<p>
  步骤2：控制器调用【模型名::with(&#8216;推荐写表名&#8217;)-&gt;get()】
</p>
<ul>
<li>
    一对多
  </li>
</ul>
<p>
  步骤1：模型定义
</p>
<p>
  public function 推荐写表名s()
</p>
<p>
  {
</p>
<p>
  return  $this-&gt;hasMany(关联模型，关联模型公共字段, 本模型公共字段);
</p>
<p>
  }
</p>
<p>
  步骤2：控制器调用【模型名::with(&#8216;推荐写表名&#8217;)-&gt;get()】
</p>
<h3>2）练习</h3>
<p>
  #一对一关系：一遍文章属于一个用户
</p>
<p>
  步骤1：设置模型
</p>
<p><img loading="lazy" decoding="async" width="1290" height="474" src="/wp-content/uploads/2018/05/word-image-5554.png" class="wp-image-6104" srcset="/wp-content/uploads/2018/05/word-image-5554.png 1290w, /wp-content/uploads/2018/05/word-image-5554-300x110.png 300w, /wp-content/uploads/2018/05/word-image-5554-768x282.png 768w, /wp-content/uploads/2018/05/word-image-5554-1024x376.png 1024w" sizes="(max-width: 1290px) 100vw, 1290px" /></p>
<p>
  步骤2：控制器调用
</p>
<p><img loading="lazy" decoding="async" width="873" height="601" src="/wp-content/uploads/2018/05/word-image-5555.png" class="wp-image-6105" srcset="/wp-content/uploads/2018/05/word-image-5555.png 873w, /wp-content/uploads/2018/05/word-image-5555-300x207.png 300w, /wp-content/uploads/2018/05/word-image-5555-768x529.png 768w, /wp-content/uploads/2018/05/word-image-5555-220x150.png 220w" sizes="(max-width: 873px) 100vw, 873px" /></p>
<p>
  public function test()
</p>
<p>
  {
</p>
<p>
      #潜规则：
</p>
<p>
      #单模型直接查询，  则$v是一个小对象  通过$v-&gt;字段名可以获取数据
</p>
<p>
      #with模型关联查询，则$v是一个小对象
</p>
<p>
      #                  获取本模型数据： 通过$v-&gt;本模型的字段
</p>
<p>
      #                  获取其他模型数据：通过$v-&gt;with的名称-&gt;其他模型的字段
</p>
<p>
      echo &#8216;&lt;pre&gt;&#8217;;
</p>
<p>
      #一对一关系：一遍文章属于一个用户
</p>
<p>
      $articles = Article::with(&#8216;student&#8217;)-&gt;get();
</p>
<p>
      print_r($articles);
</p>
<p>
      foreach ($articles as $article) {
</p>
<p>
          echo &#8216;学生表ID：&#8217;.$article-&gt;student-&gt;id . &#8216;&lt;br /&gt;&#8217;;
</p>
<p>
          echo &#8216;文章表ID：&#8217;.$article-&gt;aid . &#8216;&lt;br /&gt;&#8217;;
</p>
<p>
          echo &#8216;&lt;hr /&gt;&#8217;;
</p>
<p>
      }
</p>
<p>
  }
</p>
<p>
  #一对多关系：一个用户拥有多篇文章
</p>
<p>
  模型
</p>
<p><img loading="lazy" decoding="async" width="1055" height="554" src="/wp-content/uploads/2018/05/word-image-5556.png" class="wp-image-6106" srcset="/wp-content/uploads/2018/05/word-image-5556.png 1055w, /wp-content/uploads/2018/05/word-image-5556-300x158.png 300w, /wp-content/uploads/2018/05/word-image-5556-768x403.png 768w, /wp-content/uploads/2018/05/word-image-5556-1024x538.png 1024w" sizes="(max-width: 1055px) 100vw, 1055px" /></p>
<p>
  控制器
</p>
<p><img loading="lazy" decoding="async" width="1148" height="613" src="/wp-content/uploads/2018/05/word-image-5557.png" class="wp-image-6107" srcset="/wp-content/uploads/2018/05/word-image-5557.png 1148w, /wp-content/uploads/2018/05/word-image-5557-300x160.png 300w, /wp-content/uploads/2018/05/word-image-5557-768x410.png 768w, /wp-content/uploads/2018/05/word-image-5557-1024x547.png 1024w" sizes="(max-width: 1148px) 100vw, 1148px" /></p>
<p>
      public function test()
</p>
<p>
      {
</p>
<p>
          #潜规则：
</p>
<p>
          #单模型直接查询，  则$v是一个小对象  通过$v-&gt;字段名可以获取数据
</p>
<p>
          #with模型关联查询，则$v是一个小对象（1：N）
</p>
<p>
          #                  获取本模型数据： 通过$v-&gt;本模型的字段
</p>
<p>
          #                  获取其他模型数据：通过$v-&gt;with的名称  （数组，需要foreach   第二次foreach的$v是关联模型的一个个小对象）
</p>
<p>
          echo &#8216;&lt;pre&gt;&#8217;;
</p>
<p>
          #一对多关系：一个用户拥有多篇文章
</p>
<p>
          $students = Student::with(&#8216;articles&#8217;)-&gt;get();
</p>
<p>
          foreach ($students as $student) {
</p>
<p>
              echo $student-&gt;id . &#8216;&lt;br /&gt;&#8217;;
</p>
<p>
              //显示学生信息（脚下留心：relations是数组，没有关联数据则空数组）
</p>
<p>
              foreach ($student-&gt;articles as $student) {
</p>
<p>
                  echo  $student-&gt;aid. &#8220;&lt;br /&gt;&#8221;;
</p>
<p>
              }
</p>
<p>
              echo &#8216;&lt;hr /&gt;&#8217;;
</p>
<p>
          }
</p>
<p>
      }
</p>
<h1>路由2</h1>
<h2>理解RESTful</h2>
<ul>
<li>
    说    明：RESTful是目前最流行的一种互联网软件架构（思想）
  </li>
<li>
    架构规则：
  </li>
</ul>
<p><img loading="lazy" decoding="async" width="746" height="380" src="/wp-content/uploads/2018/05/word-image-5558.png" class="wp-image-6108" srcset="/wp-content/uploads/2018/05/word-image-5558.png 746w, /wp-content/uploads/2018/05/word-image-5558-300x153.png 300w" sizes="(max-width: 746px) 100vw, 746px" /><br />
<img loading="lazy" decoding="async" width="727" height="373" src="/wp-content/uploads/2018/05/word-image-5559.png" class="wp-image-6109" srcset="/wp-content/uploads/2018/05/word-image-5559.png 727w, /wp-content/uploads/2018/05/word-image-5559-300x154.png 300w" sizes="(max-width: 727px) 100vw, 727px" /><br />
<img loading="lazy" decoding="async" width="782" height="502" src="/wp-content/uploads/2018/05/word-image-5560.png" class="wp-image-6110" srcset="/wp-content/uploads/2018/05/word-image-5560.png 782w, /wp-content/uploads/2018/05/word-image-5560-300x193.png 300w, /wp-content/uploads/2018/05/word-image-5560-768x493.png 768w" sizes="(max-width: 782px) 100vw, 782px" /></p>
<h2>Laravel资源控制器语法（RESTful）</h2>
<ul>
<li>
    创建资源控制器：php artisan make:controller Home\Day3Controler  &#8211;resource
  </li>
<li>
    创建资源控制器路由：Route::resource(URL信息，控制器);
  </li>
</ul>
<p>
  资源控制器指会自定帮我们按照restful规则创建好方法
</p>
<h2>︴练习</h2>
<h3>创建资源控制器</h3>
<p><img loading="lazy" decoding="async" width="1268" height="538" src="/wp-content/uploads/2018/05/word-image-5561.png" class="wp-image-6111" srcset="/wp-content/uploads/2018/05/word-image-5561.png 1268w, /wp-content/uploads/2018/05/word-image-5561-300x127.png 300w, /wp-content/uploads/2018/05/word-image-5561-768x326.png 768w, /wp-content/uploads/2018/05/word-image-5561-1024x434.png 1024w" sizes="(max-width: 1268px) 100vw, 1268px" /></p>
<h3>2）创建资源控制器路由</h3>
<p><img loading="lazy" decoding="async" width="1022" height="537" src="/wp-content/uploads/2018/05/word-image-5562.png" class="wp-image-6112" srcset="/wp-content/uploads/2018/05/word-image-5562.png 1022w, /wp-content/uploads/2018/05/word-image-5562-300x158.png 300w, /wp-content/uploads/2018/05/word-image-5562-768x404.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></p>
<h3>3）访问</h3>
<p><img loading="lazy" decoding="async" width="1022" height="537" src="/wp-content/uploads/2018/05/word-image-5563.png" class="wp-image-6113" srcset="/wp-content/uploads/2018/05/word-image-5563.png 1022w, /wp-content/uploads/2018/05/word-image-5563-300x158.png 300w, /wp-content/uploads/2018/05/word-image-5563-768x404.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" /></p>
<h2>扩展</h2>
<p><a href="https://www.cnblogs.com/CraryPrimitiveMan/p/6242167.html?utm_source=itdadao&amp;utm_medium=referral">https://www.cnblogs.com/CraryPrimitiveMan/p/6242167.html?utm_source=itdadao&amp;utm_medium=referral</a>
</p>
<h1>︴其他扩展</h1>
<h2>1、PHP use 使用场景（or  or and 数据库操作）</h2>
<p><img loading="lazy" decoding="async" width="930" height="375" src="/wp-content/uploads/2018/05/word-image-5564.png" class="wp-image-6114" srcset="/wp-content/uploads/2018/05/word-image-5564.png 930w, /wp-content/uploads/2018/05/word-image-5564-300x121.png 300w, /wp-content/uploads/2018/05/word-image-5564-768x310.png 768w" sizes="(max-width: 930px) 100vw, 930px" /><br />
<img loading="lazy" decoding="async" width="681" height="285" src="/wp-content/uploads/2018/05/word-image-5565.png" class="wp-image-6115" srcset="/wp-content/uploads/2018/05/word-image-5565.png 681w, /wp-content/uploads/2018/05/word-image-5565-300x126.png 300w" sizes="(max-width: 681px) 100vw, 681px" /></p>
<h2>2、钻石设计软件</h2>
<p><img loading="lazy" decoding="async" width="767" height="457" src="/wp-content/uploads/2018/05/word-image-5566.png" class="wp-image-6116" srcset="/wp-content/uploads/2018/05/word-image-5566.png 767w, /wp-content/uploads/2018/05/word-image-5566-300x179.png 300w" sizes="(max-width: 767px) 100vw, 767px" /><br />
<img loading="lazy" decoding="async" width="273" height="54" src="/wp-content/uploads/2018/05/word-image-5567.png" class="wp-image-6117" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/6079.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
