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学习 计数器实例代码
Jun 15 PHP
PHP CKEditor 上传图片实现代码
Nov 06 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
详细解读php的命名空间(一)
Feb 21 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 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
关于crontab的使用详解
2013/06/24 PHP
php include类文件超时问题处理
2015/02/06 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
jquery获取input输入框中的值
2019/11/13 jQuery
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
python SMTP实现发送带附件电子邮件
2018/05/22 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
为什么说python适合写爬虫
2020/06/11 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
C#笔试题
2015/07/14 面试题
村党支部书记承诺书
2014/05/29 职场文书
群众路线对照检查材料
2014/09/22 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
安全承诺书格式范本
2015/04/28 职场文书
检讨书范文大全
2015/05/07 职场文书
离婚案件上诉状
2015/05/23 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
浅谈mysql哪些情况会导致索引失效
2021/11/20 MySQL