php - 在laravel中转义斜杠
问题描述
我有几十条路线,如下列表
Route::group([
'where' => ['aNumber' => '.*'],
], function () {
Route::get('air/{aNumber}/tools', 'AirController@tools');
Route::post('air/{aNumber}/handled', 'AirController@handled');
Route::post('air/{aNumber}/notHandled', 'AirController@notHandled');
Route::get('air/{aNumber}/act', 'AirController@act');
Route::post('air/{aNumber}/sendAct', 'AirController@sendAct');
Route::get('air/{aNumber}', 'AirController@show');
});
{anumber}
参数可能是这些虽然23-349493/4
这种参数会与其他路由产生一些冲突,所以例如如果我们要调用air/28-23422/sendAct
then 而不是调用@sendAct
route,它会调用@show
.
因为 laravel 认为这/sendAct
是参数的一部分。好吧,我可以通过在每条路线上添加更多 where not(Regex) 并定义每条路线应遵循的逻辑来解决此问题,但是您有更好的解决方案吗?
解决方案
不,你错了,Laravel
会选择show
因为air/28-23422/sendAct
不会打sendAct
,因为sendAct
有按假设的方法POST
,而不是GET
。
代替:
Route::post('air/{aNumber}/sendAct', 'AirController@sendAct');
尝试写作
Route::get('air/{aNumber}/sendAct', 'AirController@sendAct');
// ^^^
或^[^\/]*
用作组的 where 子句aNumber
推荐阅读
- docker - 如何使用 LXC 安全地部署 Alpine Linux
- r - R中的read_excel会为包含数字和文本值的列产生某些浮点数
- r - Find a pattern of a matrix in R?
- python-3.x - Asyncio task creation with different accepted methods give different results
- python - Adding a key, value to a dict, but I didn't tell it to?
- firebase - Unable to fetch data of specific user from Firebase Firestore to map
- angular - ERROR Cannot read property 'name' of undefined using .subscribe
- github - 如何更改 GitHub 上 PR 的所有者 / 如何征用开放的 GitHub PR
- python - 类型错误:__init__() 缺少 1 个必需的位置参数:“父”
- python - 在 Python 中,每当我尝试将字符串输入与字符串变量进行比较时,它都不起作用