1. routes/web.php

routes/web.php 文件用于定义 web 界面的路由。这里面的路由都会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。

指向 web 路由文件中定义的 POST、PUT 或 DELETE 路由的任何 HTML 表单都应该包含一个 CSRF 令牌字段,否则,这个请求将会被拒绝。

2. routes/api.php

定义在 routes/api.php 中的路由都是无状态的,并且被分配了 api 中间件组。

routes/api.php 文件中定义的路由通过 RouteServiceProvider 被嵌套到一个路由组里面。在这个路由组中,会自动添加 URL 前缀 /api 到此文件中的每个路由,这样你就无需再手动添加了。你可以在 RouteServiceProvider 类中修改此前缀以及其他路由组选项

3. 重定向路由

Route::redirect('/here', '/there', 301);

4. 路由参数

定义多个参数,参数不能包含 - ,但是可以使用下划线 _ 代替

//可以定义多个路由参数
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});

可选参数

//可选参数
Route::get('user/{name?}', function ($name = 'John') {
return $name;
});

5. 约束

正则表达式约束

Route::get('user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

全局约束

//就使用 pattern 方法在 RouteServiceProvider 的 boot 方法中定义这些模式
public function boot()
{
Route::pattern('id', '[0-9]+'); parent::boot();
}

6. 命名路由

Route::get('user/profile', function () {
//
})->name('profile');

为路由指定了名称后,就可以使用全局辅助函数 route 来生成链接或者重定向到该路由:

// 生成 URL...
$url = route('profile'); // 生成重定向...
return redirect()->route('profile');

如果是有定义参数的命名路由,可以把参数作为 route 函数的第二个参数传入,指定的参数将会自动插入到 URL 中对应的位置:

Route::get('user/{id}/profile', function ($id) {
//
})->name('profile'); $url = route('profile', ['id' => 1]);

如果你想判断当前请求是否指向了某个路由,你可以调用路由实例上的 named 方法。例如,你可以在路由中间件中检查当前路由名称:

public function handle($request, Closure $next)
{
if ($request->route()->named('profile')) {
//
} return $next($request);
}

7. 路由组

使用Route::group()方法

Route::group(function(){
Route::get('/', function () {
//...
});
})

在group之前调用下面的方法配合group实现更过功能

  1. 中间件
Route::middleware(['first', 'second'])->group(function () {
Route::get('/', function () {
// 使用 first 和 second 中间件
});
});
  1. 命名空间
Route::namespace('Admin')->group(function () {
// 在 "App\Http\Controllers\Admin" 命名空间下的控制器
});
  1. 路由前缀
Route::prefix('admin')->group(function () {
Route::get('users', function () {
// 匹配包含 "/admin/users" 的 URL
});
});
  1. 子域名路由
Route::domain('{account}.myapp.com')->group(function () {
Route::get('user/{id}', function ($account, $id) {
//
});
});

8 路由模型绑定

9 表单方法伪造

HTML 表单不支持 PUT、PATCH 或 DELETE 行为。所以当你要从 HTML 表单中调用定义了 PUT、PATCH 或 DELETE 路由时,你将需要在表单中增加隐藏的 _method 输入标签。使用 _method 字段的值作为 HTTP 的请求方法:

<form action="/foo/bar" method="POST">
<input type="hidden" name="_method" value="PUT">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

你也可以使用辅助函数 method_field 来生成隐藏的 _method 输入标签:

{{ method_field('PUT') }}

10 访问当前路由

$route = Route::current();

$name = Route::currentRouteName();

$action = Route::currentRouteAction();

laravel5.5路由的更多相关文章

  1. Laravel5笔记--路由

    路由:简单讲就是定义URL请求转向某个业务逻辑(一般是控制器方法)的方法. 1.路由定义文件: /routes/web.php   //定义web访问的路由 /routes/api.php    // ...

  2. Laravel5.1 路由 -路由分组

    路由分组有啥好处? 有时候啊 一大堆路由它们都有共同的地方,比如都使用一个中间件(过两天写)或是前缀都一样,避免代码重复 我们可以将他们分到一组中. 1 路由分组可以共享哪些属性? 中间件 middl ...

  3. Laravel5.1 路由 -基础

    什么是路由? 大K简单的说下,路由是用户访问我们程序的一个入口,比方说 你在浏览器输入:www.myblogs.com/create 就会打开一个页面,我们接收到这一个请求后后台需要做一些事儿来反馈给 ...

  4. laravel5.5路由使用name的好处

    使用name的好处 辅助函数 route 可以用于为指定路由生成 URL.命名路由生成的 URL 不与路由上定义的 URL 相耦合.因此,就算路由的 URL 有任何更改,都不需要对 route 函数调 ...

  5. laravel-5.6路由命名

    1.第一种:通过route路由中的as关键字来实现 1 Route::get('api/user',['as'='web.user'],'messageController@userInformati ...

  6. Laravel手记:执行route:cache时报LogicException

    laravel5的路由支持缓存.需要执行以下命令: php artisan route:cache 执行完毕后,报出以下错误: Route cache cleared! [LogicException ...

  7. Laravel5 路由问题 /home页面无法访问

    参考网址:http://stackoverflow.com/questions/11791375/laravel-routes-not-working Laravel5 路由问题 /home页面无法访 ...

  8. laravel5.4学习--laravel基本路由

    最基本的 Laravel 路由只接收一个 URI 和一个闭包,并以此提供一个非常简单且优雅的定义路由方法: Route::get('foo', function () {return 'Hello W ...

  9. laravel5.2总结--路由

      1 基本路由   1.1 定义路由的文件 app/Http/routes.php   1.2 最基本的路由: Route::get(''index", function () { ret ...

随机推荐

  1. Tomcat配置文件server.xml分析

    本文力求,分析清楚 tomcat 的 server.xml 文件,逐步完善更新 常用来,配置tomcat启动,端口号:配置编码等. apache-tomcat-9.0.10/conf/server.x ...

  2. centos7 安装sqlserver驱动以及扩展

    安装sqlserver驱动 sudo su curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repo ...

  3. 笨办法学Python(二十三)

    习题 23: 读代码 上一周你应该已经牢记了你的符号列表.现在你需要将这些运用起来,再花一周的时间,在网上阅读代码.这个任务初看会觉得很艰巨.我将直接把你丢到深水区呆几天,让你竭尽全力去读懂实实在在的 ...

  4. PHP:将json数据放进html标签中的详细讲解

    1.在controller中调用某方法,得到最终的json数据.根据框架开发形式,将Json数据传入视图中 2.在视图中,我们放置一个hidden形式的标签,并获取到json数据 3.这时候,我们查看 ...

  5. testng失败重跑

    重跑失败场景 1.要添加两个文件 背景:因为这里只是想单独展示失败的重跑的案例,所以先暂时把app这块的运行注释掉,只跑一个简单的demo,就一个简单类,类中就3个测试方法,失败重跑的原理是,运行方法 ...

  6. C sharp #003# 面向对象编程基本构件

    饮水思源:金老师的自学网站 索引 类的属性 简化字段/属性的初始化 命名空间 程序集 类的属性 字段+get/set方法=属性 (之前都是把字段和属性混着用..) 经典写法: using System ...

  7. CentOS下用rinetd做端口转发

    windows下的端口转发一般用的是自带的nat和porttunnel.portmap linux下端口转发映射的程序叫rinetd,启动方法rinetd -c /etc/rinetd.conf  , ...

  8. jenkins 执行shell命令出错command not found 和No such file or directory

    [root@localhost usr]# sh test.sh command not found -bash: cd: usr: No such file or directory 这里碰到了一个 ...

  9. maven简单了解,没有Maven和使用Maven的区别

    Maven提供了开发人员构建一个完整的生命周期框架.开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期.Maven让开发人员的工作更轻松,同时创建报表,检查,构建和 ...

  10. 第38章 I2S—音频播放与录音输入—零死角玩转STM32-F429系列

    第38章     I2S—音频播放与录音输入 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...