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 相关文章推荐
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
用php+mysql一个名片库程序
Oct 09 PHP
第十二节--类的自动加载
Nov 16 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
php中的动态调用实例分析
Jan 07 PHP
PHP的pcntl多进程用法实例
Mar 19 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
zend框架实现支持sql server的操作方法
Dec 08 PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 PHP
PHP 数组黑名单/白名单实例代码详解
Jun 04 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHP实现的线索二叉树及二叉树遍历方法详解
2016/04/25 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
一个基于jQuery的树型插件(OrangeTree)使用介绍
2012/05/03 Javascript
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
Json序列化和反序列化方法解析
2013/12/19 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
js判断某个字符出现的次数的简单实例
2016/06/03 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
jquery.Jcrop结合JAVA后台实现图片裁剪上传实例
2016/11/05 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
Python进阶之尾递归的用法实例
2018/01/31 Python
TensorFlow如何实现反向传播
2018/02/06 Python
python占位符输入方式实例
2019/05/27 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
Django实现将一个字典传到前端显示出来
2020/04/03 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
中学家长会邀请函
2014/02/03 职场文书
高一新生军训感言
2014/03/02 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
质检员岗位职责
2015/02/03 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
幼儿园六一主持词
2015/06/30 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
仅仅使用 HTML/CSS 实现各类进度条的方式汇总
2021/11/11 HTML / CSS
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python