laravel路由

路由分类:

    基本路由:接收一个URL和一个闭包

      Route::get('foo/bar',function(){  //闭包函数

        return 'hello world';

      })

      注册路由的方法:get,post,put,delete,match,any

      可以用函数url生成路由对应的URLs:$url=url('foo');

 

    参数路由:路由参数是通过{参数}实现,参数在路由被执行时会被传递到路由的闭包。路由参数不能包含 ' - ' 字符,可以使用 ' _ ' 替代

      1、必选参数

        example:从URL中捕获用户ID

        Route::get('user/{id}',function($id)){

          return 'User'.$id;

        }

        注:可以定义多个路由参数,定义几个参数,在闭包函数中添加几个参数。

      2、可选参数:在参数名的后边加上?号,另外在闭包函数的参数中给参数赋值。

        example:

        Route::get('user/{name?}',function($name=null){   //$name='LiuShuaiCai'

          return $name;

        })

      3、正则约束:通过where方法来约束路由参数的格式,where('参数名','正则表达式')。

        example:

        Route::get('user/{id}/{name}',function($id,$name){

          return $id.':'.$name;

        })->where(['id']=>'[0-9]+',['name']=>'[a-z]+');

 

        3.1、全局约束:路由参数在全局范围内被给定的正则表达式约束,使用pattern方法,在RouteServiceProvider类的boot方法中定义约束模式。

          /**

           * 定义路由模型绑定,模式过滤器等

           *

           * @param \Illuminate\Routing\Router $router

           * @return void * @translator http://laravelacademy.org

           */

          public function boot(Router $router){

            $router->pattern('id', '[0-9]+');

            parent::boot($router);

          }

 

    命名路由:命名路由使生成URLs或者重定向到指定路由变得很方便,在定义路由时指定路由名称,然后使用数组键as指定路由别名。

      Route::get('user/profile',['as'=>'profile',function(){

        //

      }]);  

      为控制器动作指定路由名称:

      Route::get('user/profile',[

       'as'=>'profiel','uses'=>'UserController@showProfile' 

      ]);         

      为命名路由生成URLs:通过route函数生成URLs时可以使用as定义的路由名字:

      $url = route('profile');

      $redirect = redirect()->route('profile');

      如果路由定义了参数,可以将参数作为函数route的第二个参数。

      Route::get('user/{id}/profile',['as'->'profile',function($id){

        //

      }])

      $url = route('profile',['id'=>1]);

    路由群组

      1、中间件

      2、命名空间

      3、子域名路由

      4、路由前缀

posted on 2016-07-01 14:09  Mr.风的影子  阅读(315)  评论(0编辑  收藏  举报

导航