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 相关文章推荐
提升PHP执行速度全攻略
Oct 09 PHP
php防注
Jan 15 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
19个Android常用工具类汇总
Dec 30 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
php删除指定目录的方法
Apr 03 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
Laravel框架模型的创建及模型对数据操作示例
May 07 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积分兑换接口实例
2015/02/09 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
2017/08/03 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
取得父标签
2006/11/14 Javascript
javascript在事件监听方面的兼容性小结
2010/04/07 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
基于jQuery的星级评分插件
2011/08/12 Javascript
基于jquery跨浏览器显示的file上传控件
2011/10/24 Javascript
远离JS灾难css灾难之 js私有函数和css选择器作为容器
2011/12/11 Javascript
MooBox 基于Mootools的对话框插件
2012/01/20 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
js获取指定日期前后的日期代码
2013/08/20 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
AngularJS 过滤器的简单实例
2016/07/27 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
使用javascript函数编写简单银行取钱存钱流程
2018/05/26 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
python如何重载模块实例解析
2018/01/25 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
2020/07/13 Python
Python如何实现机器人聊天
2020/09/10 Python
俄罗斯一家时尚女装商店:Charuel
2019/12/04 全球购物
KOHLER科勒美国官网:国际著名卫浴橱柜领先品牌
2020/06/27 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
小学学习委员竞选稿
2015/11/20 职场文书