php - 将多个可选参数传递给路由
问题描述
我正在为我的 axios 请求准备后端。正面是这样的
handleSearchSubmit(column, value, dateFrom, dateTo) {
axios
.get(`api/analyses/get_requested_analysis/${column}/${value}/${dateFrom}/${dateTo}`, {
column,
value,
dateFrom,
dateTo
})
.then(response => {
console.log(response)
})
},
因此,用户将选择一个字段(列)(我的数据库中的一行)和一个值供我搜索。有时用户会输入一个字符串,或者有时是日期。
路线如下所示:
Route::get('/analyses/get_requested_analysis/{column}/{value?}/{dateFrom?}/{dateTo?}', 'Api\AnalyseController@get_requested_analysis')
我现在遇到的问题是,如果用户想按我最终得到的日期进行搜索
/analyses/get_requested_analysis/Date//2021-09-29/2021-10-08 404 (Not Found)
有两个 // 因为该值不存在。
知道如何解决这个问题吗?或者如何对我的参数进行分组,这样 Route 就不会那么“奇怪”?类似于 '/get_requested_analysis' 的参数在控制器中而不是在路由 url 中。
我正在使用 Laravel 5.5,我很迷茫,因为我从未学习过 php
谢谢
解决方案
我认为使用路线中的所有内容效率不高,您应该只使用常规 get params :
/analyses/get_requested_analysis/{column}?value=foo,from=2021-10-08,to=2021-10-09
如果您想在日期格式上添加额外的验证,您可以在您的控制器中执行此操作:
$this->validate($request, [
'from' => 'date_format:Y-m-d',
'to' => 'date_format:Y-m-d'
]);
这样您就可以确定在 url 中传递的值是所需的格式
推荐阅读
- git - 为什么我拒绝将不相关的历史消息与 git 合并
- python - 一个类的特定实例可以在 python 中创建自己的变量吗?
- c - pthread_join() 段错误
- javascript - 如何使用 React 的 Context 功能将 HTML5 Canvas 上下文传递给 this.props.children?
- node.js - NPM 安装,在 npm 审计的 hitbtc-api 节点包中发现漏洞
- python - matplotlib PGF 输出:轮廓标签超出图形边界
- javascript - 将常规对象更改为工作功能。类型错误:不是函数
- python - 如何从 Python 中的单个输入文件中读取两个矩阵
- java - Java Switch Case布尔函数?
- javascript - JavaScript addEventListener 暂停和播放视频