laravel框架之路由

laravel框架——路由

(一)、简介

laravel中的MVC则是通过路由功能映射到对应的程序(控制器方法),通过路由将用户的请求发送到对应的程序进行处理,其作用就是建立url和处理程序之间的映射关系,这样做有一个好处,对url进行美化只需要修改路由而无需对程序本身进行修改。
laravel中请求类型包括:get、post、put、patch、delete。
route.php是laravel的路由文件,所有的路由映射都要通过编辑route.php文件进行代码书写。

(二)、路由学习

1、基本路由

get请求:

<?php
 
 //基本路由的get请求
 
 Route::get('get_base', function(){
    return 'get request base';
  });
  
 
 浏览器输入:http://127.0.0.1/laravel/public/get_base
 页面输出:get request base

post请求:

 <?php
  //基本路由的post请求
 
 Route::post('post_base', function(){
    return 'post request base';
 });
 
 
 以上路由需要通过post方式请求
 请求后页面输出:post request base
2、多请求路由
 顾名思义,多请求路由则是可以通过多种请求方式进行请求,多请求路由主要有两种方式,match和any。

(1)、match接收请求类型的数组从而限定请求的类型:

 <php
 
  //多请求路由match
 
 Route::match(['get','post'], 'multi', function(){
     return 'multi post or get';
  });
  
 url:http://127.0.0.1/laravel/public/multi
 此路由可通过get、post请求
 请求后返回字符串:multi post or get

(2)、any方式

<?php
 
 //any方式
 
 Route::any('multi', function(){
   return 'multi get or post';
  });
  
  
 url:http://127.0.0.1/laravel/public/multi
请求返回字符串:multi get or post
3、路由参数

给路由绑定参数,接收参数进行处理

(1)、必选参数

<?php

 //带参数的路由

  Route::get('myname/{name}', function($name){
   return 'my name is '.$name;
  });


 url:http://127.0.0.1/laravel/public/myname/yuwenbo
get访问后页面输出:my name is yuwenbo

(2)、可选参数($userid=null表示默认值,可设置没有参数时的默认值)

 <?php
 //可选参数绑定
 Route::get('user/{userid?}', function($userid=null){
    return 'userid is '.$userid;
 });
 
 访问url:http://127.0.0.1/laravel/public/user/username
 输出:userid is username

 访问url:http://127.0.0.1/laravel/public/user
 输出:userid is
 可选参数绑定使得路由很灵活

(3)、路由参数过滤(用正则表达式对传入的参数进行过滤)

 <?php
  /*  参数过滤 */
 //单个参数过滤
 Route::get('num/{num?}', function($num=15){
     return 'this num is '.$num;
})->where('num','[0-9]+');

 访问url:http://127.0.0.1/laravel/public/num/5
 返回输出:this num is 5

 访问url:http://127.0.0.1/laravel/public/num
 返回输出:this num is 15

 访问url:http://127.0.0.1/laravel/public/num/fhdja
 页面报错

 //多个参数过滤
 Route::get('info/{name}/{age?}', function($name,$age=null){
    return 'name is '.$name.', age is '.$age;
 })->where(['name' => '[a-zA-Z]+', 'age' => '[1-9]+']);
 
可使用数组形式过滤多个参数

4、路由别名
    给路由通过[‘as’ => ‘alias’]数组使用别名后,可通过route(‘别名’)生成url,请看代码理解:


<?php

  //路由别名
 
 Route::get('student/info',['as' => 'studentInfo' ,function(){

    //通过route('studentInfo')生成完成url后返回
     return route('studentInfo');

 }]);

访问url:http://127.0.0.1/laravel/public/student/info
 页面返回:http://127.0.0.1/laravel/public/student/info

注:别名的好处在于,以后在控制器中使用route('别名')的方式生成url后,即便修改了路由的名字,也不用再修改控制器程序,因为通过别名程序能自动生成修改后的url

5、路由群组
    通过关键字group创建路由群组

<?php
 
    /*  *路由群组 */

   Route::group(['prefix' => 'admin'], function(){
 
   //此时的访问地址:http://127.0.0.1/laravel/public/admin/student/info
     Route::get('student/info',['as' => 'studentInfo' ,function(){
        return route('studentInfo');
    }]);

    //此时的访问地址:http://127.0.0.1/laravel/public/admin/info/yuwenbo/20
     Route::get('info/{name}/{age?}', function($name,$age=null){
        return 'name is '.$name.', age is '.$age;
     })->where(['name' => '[a-zA-Z]+', 'age' => '[1-9]+']);
   
 });

 此时的访问地址url必须要加上群组前缀,否则将不能访问

6、路由中输出视图
    通过view()函数输入视图

 <?php
 
  /** * 路由中输出视图 */

  //框架的欢迎界面路由

 Route::get('/',function(){
  return view('welcome');
 });

 访问url:http://127.0.0.1/laravel/public
 浏览器显示laravel的欢迎界面


 //做如下修改
 Route::get('welcome',function(){
  return view('welcome');
 });

 修改后访问url:http://127.0.0.1/laravel/public/welcome
 浏览器同样显示laravel的欢迎界面

一般情况是不会在路由中输出视图的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值