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 相关文章推荐
GD输出汉字的函数的分析
Oct 09 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
php 文本文件的读取效率
Feb 10 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
PHP实现自动登入google play下载app report的方法
Sep 23 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
php根据生日计算年龄的方法
Jul 13 PHP
Yii快速入门经典教程
Dec 28 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
PHP实现原生态图片上传封装类方法
Nov 08 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
Aug 12 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
操作Oracle的php类
2006/10/09 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
PHP fclose函数用法总结
2019/02/15 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
jquery 表单进行客户端验证demo
2009/08/24 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
js文件缓存之版本管理详解
2013/07/05 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
Vue切换Tab动态渲染组件的操作
2020/09/21 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
Python书单 不将就
2017/07/11 Python
python生成1行四列全2矩阵的方法
2018/08/04 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
python中matplotlib实现随鼠标滑动自动标注代码
2020/04/23 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
Python常用数据分析模块原理解析
2020/07/20 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
人力资源经理自我评价
2014/01/04 职场文书
优秀党员获奖感言
2014/02/18 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
怎么写工作检讨书
2014/11/16 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
感谢信
2019/04/11 职场文书