博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel 从入口到输出过程详解
阅读量:6603 次
发布时间:2019-06-24

本文共 3299 字,大约阅读时间需要 10 分钟。

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 视图文件

Laravel 从入口到输出解析完毕!

转载地址:http://knwso.baihongyu.com/

你可能感兴趣的文章
【web JSP basePath】basePath的含义
查看>>
dos命令批处理发送文字到剪贴板
查看>>
Elasticsearch增删改查 之 —— Delete删除
查看>>
OK335xS 256M 512M nand flash make ubifs hacking
查看>>
Point Grey articles link
查看>>
三步走——带你打造一份完美的数据科学家简历
查看>>
shell的历史
查看>>
5.12. zip
查看>>
6.6. Ceph
查看>>
RBAC权限管理
查看>>
【Java对象生命周期】Java对象的生命周期:java是怎么分配内存的和怎么回收的?...
查看>>
高性能的通讯库-zeroMQ的几个高性能特征
查看>>
云计算学习1
查看>>
Elasticsearch教程
查看>>
CAS的Session两秒挂掉?--解决退出后登录,页面刷新的问题
查看>>
Android的SDK与ADT不匹配问题
查看>>
JFreeChart全面讲解
查看>>
chrome 升级 v.34 后 activiti5.14 Modeler 出错
查看>>
SOA(面向服务框架)
查看>>
Perl Modules about File
查看>>