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写的小东西
Dec 06 PHP
php2html php生成静态页函数
Dec 08 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
php使用百度ping服务代码实例
Jun 19 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
PHP分页类集锦
Nov 18 PHP
启用Csrf后POST数据时出现的400错误
Jul 05 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
thinkphp修改配置进入默认首页的方法
Feb 07 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
Laravel validate error处理,ajax,json示例
Oct 25 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
模仿OSO的论坛(一)
2006/10/09 PHP
php设计模式 Observer(观察者模式)
2011/06/26 PHP
destoon复制新模块的方法
2014/06/21 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
Python中super函数的用法
2017/11/17 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
为什么要用EJB
2014/04/17 面试题
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
简单的辞职信范文
2014/01/18 职场文书
培训班开班仪式主持词
2014/03/28 职场文书
安全责任书范文
2014/08/25 职场文书
毕业生银行实习自我鉴定
2014/10/14 职场文书
千手观音观后感
2015/06/03 职场文书
唐山大地震观后感
2015/06/05 职场文书
个人收入证明范本
2015/06/12 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
pytorch实现ResNet结构的实例代码
2021/05/17 Python