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 路由的主要内容,如果未能解决你的问题,请参考以下文章

laravel特殊功能代码片段集合

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

Laravel:如何在控制器的几种方法中重用代码片段