Laravel——路由

1.路由视图 

 2.路由重定向

如果你需要定义一个重定向到其他 URI 的路由,可以使用 Route::redirect 方法,该方法非常方便,以至于你不需要再定义额外的路由或控制器 来执行简单的重定向逻辑:
Route::redirect('/here', '/there', 301);
其中 here 表示原路由,there 表示重定向之后的路由,301 是一个 HTTP 状态码,用于标识重定向。

 CSRF 保护

在 routes/web.php 路由文件中所有请求方式为 PUT、POST 或 DELETE 的路由对应的 HTML 表单都必须包含一个 CSRF 令牌字段,否则,请求会被 拒绝。

关于 CSRF 的更多细节,可以参考 CSRF 文档:
<form method="POST" action="/profile">     {{ csrf_field() }}     ... </form>

 还是以上面的 foo 路由为例,如果我们不在 VerifyCsrfToken 中间件中排除对它的检查(事实上,这样的操作也不安全),那么就需要在表单提交 中带上 csrf_token 字段:

这样,当我们访问 http://blog.test/form 然后在页面点击提交按钮后,页面会跳转到 http://blog.test/foo 并显示如下内容:

    This is a request from get or post 

必选参数
有时我们需要在路由中获取 URI 请求参数。例如,如果要从 URL 中获取用户 ID,需要通过如下方式定义路由参数:
Route::get('user/{id}', function ($id) {     return 'User ' . $id; });
这样我们在浏览器中访问 http://blog.test/user/1,就会得到以下输出:
    User 1
可以根据需要在路由中定义多个路由参数:
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {     return $postId . '-' . $commentId; });
根据上面的示例,路由参数需要通过花括号 {} 进行包裹并且是拼音字母,这些参数在路由被执行时会被传递到路由的闭包。路由参数名称不能包 含 - 字符,如果需要的话可以使用 _ 替代,比如如果某个路由参数定义成 {post-id}则访问路由会报错,应该修改成 {post_id} 才行。路由参数被 注入到路由回调/控制器取决于它们的顺序,与回调/控制器名称无关。

可选参数
有必选参数就有可选参数,这可以通过在参数名后加一个 ? 标记来实现,这种情况下需要给相应的变量指定默认值,当对应的路由参数为空时,使用 默认值:
Route::get('user/{name?}', function ($name = null) {     return $name; });
Route::get('user/{name?}', function ($name = 'John') {     return $name; });

这时如果定义的路由是下面这个的话,访问 http://blog.test/user 会返回 John。

正则约束

Route::get('user/{id}/{name}', function ($id, $name) {
   
// 同时指定 id 和 name 的数据格式
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);

如果想要路由参数在全局范围内被给定正则表达式约束,可以使用 pattern 方法。需要在 RouteServiceProvider 类的 boot 方法中定义这种约束模式:app\providers\RouteServiceProvider.php

当路由参数不为数字时,该路由会被约束。

 

命名路由
命名路由为生成 URL 或重定向提供了方便,实现起来也很简单,在路由定义之后使用 name 方法链的方式来定义该路由的名称:
Route::get('user/profile', function () {
    // 通过路由名称生成 URL
   return 'my url: ' . route('profile');

})->name('profile');

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值