Ela's Notes
So Be It


Hitokoto ·
[Laravel学习笔记][3]路由的基本应用
Elatis   后端, Laravel, 学习笔记   1033 | 文章字数: 2582 字

米拉酱怎么可以这么可爱!

初识路由

路由系统是所有 PHP 框架的核心.
路由承载的是 URL 到代码片段的映射,不同的框架所附带的路由系统是这个框架本质最真实的写照,一丝不挂,一览无余。
--https://github.com/johnlui/Learn-Laravel-5/issues/17

那么首先来看一下laravel的路由长什么样
打开项目目录/routes/web.php,可以看到里面有几行代码:

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

我来翻译一下自带的那段注释(其实是姬翻):

您可以在这里为您的应用程序注册网络路由。 这些路由由RouteServiceProvider在包含“web”中间件组的组中加载。 现在创造伟大的东西吧!

总之,这段注释粗略地告诉了我们这个文件是干嘛的,以及路由是如何被加载的.
看完注释之后来看一下代码吧
首先看到Auth::routes();这一行代码,还记得上一篇笔记中我们开启了一个Auth系统吗?这就是Auth系统自动写入的路由配置.
而这行上面的几行是一个闭包路由:

Route::get('/', function () {
    return view('welcome');
});

所谓闭包路由就是把用于响应路由请求的代码都写在一个闭包函数里.
什么是闭包函数?闭包函数(Closure)就是------匿名函数...
如下面的例子就是创建了一个匿名/闭包函数

<?php
$x = 1;$y = 2;
function sum()
{
    return function ($a, $b) {  //闭包函数
            return $a + $b;
        };
}
$sum = sum();                   //得到的是这个闭包函数
$ret = $sum($x, $y);            //调用这个函数对象才能进行加法运算
echo strval($ret);

其实闭包函数的主要作用就是给函数当做参数使用...
不过更通常的写法是将路由指向控制器的一个方法
如以下写法是在有人以GET方式请求/home的时候调用HomeController类中的index方法

Route::get("/home","HomeController@index");

其实控制器也就是一个类,不要认为它是什么高深的东西
如果是想对POST请求的/home做特殊处理,就写成以下这样(把get改成post)

Route::post("/home","HomeController@store");

当有人以POST方式请求/home的时候,路由调用的就是store方法而不是index方法
类似的,如PUT,DELETE方式的请求都可以仿照上面的写法

资源路由

资源路由是一种特殊的写法,它集成了一些各种方式的http请求的处理方式,能让我们少些几行路由代码
它的写法是这样的

Route::resource("/home","HomeController");

也就是把双冒号::后面的单词变成了resource,以及把第二个参数的@以及后面的都删掉了
它相当于写了许多行的路由,并且都绑定上了指定函数名
然后我们在对应控制器中定义函数名正确的函数,就可以了
资源路由的请求方式以及所对应的函数名如下表:

动作 URI 行为 路由名称
GET /photos index photos.index
GET /photos/create create photos.create
POST /photos store photos.store
GET /photos/{photo} show photos.show
GET /photos/{photo}/edit edit photos.edit
PUT/PATCH /photos/{photo} update photos.update
DELETE /photos/{photo} destroy photos.destroy

其中photos替换成你想要的路径

评论

发送失败 可能是您的发言太频繁或联系方式有误

提交评论

Theme LightWhite Made by Archeb With
自豪地使用Typecho
© 2017 - 2020 elatis.cn 版权所有 ICP证: 冀ICP备18008017号-1
全站共 21.03 W 字
博客已经运行了