Laravel 路由
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel 路由相关的知识,希望对你有一定的参考价值。
参考:http://laravelacademy.org/post/398.html
以下代码在:laravel文件夹/app/Http/routes.php文件中更改填写
1.路由 GET 请求
格式:
Route::get(‘请求页面‘,function(){ return 返回值; });
示例:
Route::get(‘/hello‘,function(){ return "Hello Laravel[GET]!"; });
2.路由 POST 请求
格式:
Route::post(‘请求页面‘,function(){ return 返回值; });
示例:
Route::post(‘/hello‘,function(){ return "Hello Laravel[POST]!"; });
有一点需要注意的是,如果不post到/hello这个页面,而是直接访问,会提示:
Sorry, the page you are looking for could not be found.
所以,还需要构造一个路由方法来post请求到/hello这个页面,下面的代码用构造了get请求,在get返回的表单中post请求/hello页面:
Route::get(‘/testPost‘,function(){ $csrf_token = csrf_token(); //写这篇文章的时候没有明白怎么用,删除没有影响。 $form = <<<FORM <form action="/hello" method="POST"> <input type="hidden" name="_token" value="{$csrf_token}"> //写这篇文章的时候没弄明白这有什么用,删除没有影响。 <input type="submit" value="Test"/> </form> FORM; return $form; });
当访问/testPost页面的时候,返回一个表单,只有一个Test的submit按钮,当点击Test按钮,post请求/hello页面,显示:
Hello Laravel[POST]!
3.其他请求:
match请求:允许使用多种方式请求页面,语法——Route::match([‘请求方法‘,‘请求方法‘,...,‘N‘],‘页面地址‘,回调函数);
any请求:允许所有方式请求页面,语法——Route::any(‘页面地址‘,回调方法);
4.路由参数:
这样的参数在请求时必须填写,不能为空。
语法:
Route::get(‘/hello/{参数}‘,function($name){ return "Hello {$name}!"; });
示例:
Route::get(‘/hello/{name}‘,function($name){ return "Hello {$name}!"; });
5.路由多参数:
这样的参数在请求时必须填写,不能为空。
语法:
Route::get(‘/hello/{参数1}/{参数2}‘,function($arg1,$arg2){ return "Hello {$arg1}--{$arg2}!"; });
示例:
Route::get(‘/hello/{name}--/{user}‘,function($name,$user){ return "Hello {$name} by {$user}!"; });
6.可选参数
这样的参数在请求时不是必须填写,可以为空。
语法:
Route::get(‘/hello/{参数名?}‘,function($name="默认参数"){ return "Hello {$name}!"; });
示例:
Route::get(‘/hello/{name?}‘,function($name="Laravel"){ return "Hello {$name}!"; });
7.正则约束:
所有参数类型都适用。
语法:
Route::get(‘/hello/{参数名?}‘,function($name="默认参数"){ return "Hello {$name}!"; })->where(‘参数名‘,‘正则表达式‘);
8.全局正则约束:
如果我们想要在全局范围内对参数进行条件约束,可以在RouteServiceProvider(/app/Providers/RouteServiceProvider.php)
的boot
方法中做如下定义:
public function boot(Router $router) { $router->pattern(‘name‘,‘[A-Za-z]+‘); //新加行 parent::boot($router); }
以上是关于Laravel 路由的主要内容,如果未能解决你的问题,请参考以下文章