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令牌 Token改进版
Jul 18 PHP
php 什么是PEAR?(第二篇)
Mar 19 PHP
Smarty Foreach 使用说明
Mar 23 PHP
php中jpgraph类库的使用介绍
Aug 08 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
php实现购物车功能(下)
Jan 05 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
PHP中文字符串截断无乱码解决方法
Oct 10 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 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实现解析xml并生成sql语句的方法
2018/02/03 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
javascript instanceof,typeof的区别
2010/03/24 Javascript
JavaScript 学习历程和心得分享
2010/12/12 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
JS+ACTIVEX实现网页选择本地目录路径对话框
2013/03/18 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
2016/08/25 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
Python中的进程分支fork和exec详解
2015/04/11 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
详解python之协程gevent模块
2018/06/14 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
python对XML文件的操作实现代码
2020/03/27 Python
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
简历自我评价怎么写呢?
2014/01/06 职场文书
房屋继承公证书
2014/04/10 职场文书
婚前协议书范本
2014/10/27 职场文书
2014年工商所工作总结
2014/12/09 职场文书
期中考试后的感想
2015/08/07 职场文书
初中政治教学工作总结
2015/08/13 职场文书
学校教代会开幕词
2016/03/04 职场文书
导游词之南京中山陵
2019/11/27 职场文书