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初学者头疼十四条问题大总结
Nov 12 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
Aug 19 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
PHP使用反射机制实现查找类和方法的所在位置
Apr 22 PHP
深入理解PHP原理之执行周期分析
Jun 01 PHP
goto语法在PHP中的使用教程
Sep 17 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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
js 页面输出值
2008/11/30 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
jquery中常用的函数和属性详细解析
2014/03/07 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
javascript的事件触发器介绍的实现
2014/06/05 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
Python科学计算之Pandas详解
2017/01/15 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
python 输出所有大小写字母的方法
2019/01/02 Python
python实现可变变量名方法详解
2019/07/01 Python
python中的global关键字的使用方法
2019/08/20 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
如何卸载python插件
2020/07/08 Python
python实现不同数据库间数据同步功能
2021/02/25 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
最新的咖啡店创业计划书
2013/12/30 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
项目合作协议书
2014/04/16 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
会计专业自荐信范文
2019/05/22 职场文书