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 29 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 PHP
php使用date和strtotime函数输出指定日期的方法
Nov 14 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
Mar 02 PHP
php实现上传图片文件代码
Jul 19 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
Nov 12 PHP
Zend Framework前端控制器用法示例
Dec 11 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
Dec 20 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
smarty表格换行实例
2014/12/15 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
ReactNative 之FlatList使用及踩坑封装总结
2017/11/29 Javascript
jquery分页插件pagination使用教程
2018/10/23 jQuery
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
Python实现简单登录验证
2016/04/13 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
Python如何执行系统命令
2020/09/23 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
木工主管岗位职责
2013/12/08 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技