信息发布→ 登录 注册 退出

Laravel怎么同时接收路由参数和查询字符串中的参数

发布时间:2021-03-04

点击量:

下面由laravel教程栏目给大家介绍laravel同时接收路由参数和查询字符串中的参数,希望对需要的朋友有所帮助!

Laravel捕捉路由参数

Laravel允许在controller方法中捕捉路由里定义的参数,如下所示:

路由中定义参数:
Route::get('post/{id}', 'PostController@content');

控制器方法里捕捉路由参数:

class PostController extends Controller
{

    public function content($id)
    {
        //
    }
}

Laravel同时捕获路由参数和查询字符串参数

那在控制器里怎么既能捕捉到路由里定义的参数又能接收到url查询字符串里的参数呢,比如请求链接是这样的http://example.com.cn/post/1?from=index
引用官网文档的解释

Dependency Injection & Route ParametersIf your controller method is also expecting input from a route parameter you should list your route parameters after your other dependencies.

就是说如果想要在控制器方法注入依赖时仍然能使用路由里的参数,你需要把路由里的参数列举在方法依赖的后面,比如:

get('from')
    }
}

Laravel捕获多个可选参数

此外laravel路由中我们还可以定义多个可选参数:

Route::get('/article/{id}/{source?}/{medium?}/{campaign?}', 'ArticleController@detail')

在控制器方法中可选参数需要定义成默认参数:

    public function detail(Request $request, $id, $source = '', $mediun = '', $campaign = '')
    {
        //
    }

这样定义完后路由里URL里可以传递0~3个可选参数,但是必须按照顺序:即想传第二个可选参数那么第一个可选参数必须有。
URL示例:
http://example.com.cn/article/1/wx/h5?param1=val1¶m2=val2
在这个例子中"wx"会传递给变量$source, "h5"会传递给变量$medium

推荐:最新的五个Laravel视频教程

标签:# php  # laravel  # 字符串  # input  # http  # 可选  # 多个  # 在这个  # 还可以  # 第一个  # 是这样  # 第二个  # 给大家  # 又能  # 所示  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!