Laravel学习教程之从入口到输出过程详解


Posted in PHP onAugust 27, 2017

本文主要给大家介绍了关于Laravel从入口到输出过程的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

I. 预备知识

Laravel 目录

/path/to

后面简称 Laravel

Web 目录

Laravel/public

后面简称 Web

入口文件

Web/index.php

II. 过程详解

范例: http://la.com/test/yueshu/female/20?name=chenxuelong

1. 定义 web 路由

文件路径:

Laravel/routes/web.php

修改如下:

Route::get('/test/{name}/{sex}/{age}' , 'TestController@test')

2. 定义中间件

2.1 中间件路径:

Laravel/app/Http/Middleware

2.2 新建中间件 Test.php:

namespace App\Http\Middleware;

use Closure;

class Test {
 /**
  * 必须返回响应(response)
  */
 public function handle($request , Closure $next){
  // 在处理请求之前做些什么...
  
  $response = $next($request);
  
  // 在处理请求之后做些什么
  
  return $response;
 }
 
 /**
  * 中间件处理完毕后,做些什么
  */
 public function terminate($request , $response){
  // 中间件处理完毕后,做些什么....
 }
}

2.3 注册中间件

中间件配件文件路径:

Laravel/app/Http/Kernel.php

在 routeMiddleware 键名下新增:

'Test' => \App\Http\Middleware\Test::class

4. 表单验证(请求)

文件存放目录:

Laravel/app/Http/Requests

新建 FormValidate.php 验证类:

/**
 * 验证不通过时,通过 header 中的 referer 重定向到
 * 上一页
 */
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class FormValidate extends FormRequest {
 // 是否经过授权的访问
 public function authorize(){
  return true;
 } 
 
 // 验证规则
 public function rules(){
  /**
   * required 表示必须
   * max:255 最大长度 255
   */
  return [
   'name' => 'required|max:255'
  ];
 }
}

5. 模型

文件路径:

Laravel/app

新建模型 Test.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Test extends Model {

 // 获取某张表的所有数据(查询构造器)
 public function get($table){
  \DB::table($table)->get();
 }
 
 // 获取(原生 sql)
 public function select($sql , $params){
  \DB::select($sql , $params);
 }
 
 // 插入(原生 sql)
 public functioin insert($sql , $params){
  \DB::insert($sql , $params);
 }
 
 // 更新(原生 sql)
 public function update($sql , $params){
  \DB::update($sql , $params);
 }
 
 // 删除(原生 sql)
 public function delete($sql , $params){
  \DB::delete($sql , $params);
 }
 
 // 执行通用 sql(原生 sql)
 public function statement($sql , $params){
  \DB::statement($sql , $params);
 }
 
 // 事务
 public function transaction($sql , callable $callback){
  \DB::transaction($sql , $callback):
 }
 
 // 手动开启事务
 public function beginTransaction(){
  \DB::beginTransaction();
 }
 
 // 手动回滚
 public function rollBack(){
  \DB::rollBack();
 }
 
 // 提交
 public function commit(){
  \DB::commit();
 }
 
 
}

6. 控制器

控制器路径:

Laravel/app/Http/Controllers

新建控制器 TestController.php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

// 引入请求验证类
use App\Http\Requests\FormValidate;

/* 可选注入模型类(分层)
 * 这边引入了一个 Test 模型类
 */
use App\Test;

class TestController extends Controller {

 // 构造器(可以添加中间件 或 注入)
 function __construct(Test $test){
  // 添加先前注册的中间件
  $this->middleware('Test');
  
  // 注入模型类
  $this->test = $test;
 }
 
 /**
  * 路由中设置的动作名称
  * 通过类型提示,引入请求验证
  */
 public function test(FormValidate $request , $name , $sex , $age){
  // 通过验证的请求.....
  $data = [];
  
  if (view()->exists('test')) {
   view('test' , $data);
  } else {
   exit('模板文件不存在....');
  }
 }
}

7. 视图

视图路径:

Laravel/resource/views

新建 test.blade.php 视图文件

<h1>Laravel 从入口到输出解析完毕!</h1>

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
AJAX for PHP简单表数据查询实例
Jan 02 PHP
PHP isset()与empty()的使用区别详解
Aug 29 PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 PHP
关于PHP二进制流 逐bit的低位在前算法(详解)
Jun 13 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
PHP 错误处理机制
Jul 06 PHP
php实现多城市切换特效
Aug 09 PHP
PHPCMS V9 添加二级导航的思路详解
Oct 20 PHP
php登录超时检测功能实例详解
Mar 21 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 #PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 #PHP
PHP实现的简单sha1加密功能示例
Aug 27 #PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 #PHP
详解PHP swoole process的使用方法
Aug 26 #PHP
Yii2框架可逆加密简单实现方法
Aug 25 #PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 #PHP
You might like
PHP采集腾讯微博的实现代码
2012/01/19 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
jquery实用代码片段集合
2010/08/12 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
javascript之典型高阶函数应用介绍二
2013/01/10 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
以windows service方式运行Python程序的方法
2015/06/03 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
Nordgreen美国官网:在线购买极简主义斯堪的纳维亚手表
2019/07/24 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
工商学院毕业生自荐信
2013/11/12 职场文书
岗位职责风险点
2014/03/12 职场文书
六个一活动实施方案
2014/03/21 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
会计个人实习计划书
2014/08/15 职场文书
同学会感言
2015/07/30 职场文书
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android