laravel - laravel 在路由中中断参数名称
问题描述
在定义一个简单的以下路线后web.php
:
Route::prefix('{language}')->middleware(['setLanguage'])->group(function () {
Route::prefix('panel')->group(function () {
Route::prefix('contactusmodule')->group(function () {
Route::resource('contactUs', 'ContactUsController')->names('contactUs');
});
});
});
我尝试通过此代码获取路线名称:
request()->route()->parameters()
language
这里我的路由参数是:contactUs
当我找到这个网址时:
http://127.0.0.1:8000/en/panel/contactusmodule/contactUs/3/edit
这条路线为:
route('contactUs.edit',[app()->getLocale(),$contact->id])
我应该得到language
and contactUs
,但我得到了这个数组:
array:2 [
"language" => "en"
"contactU" => "3"
]
正如你在这个输出问题中看到的那样contactU
,应该是哪个contactUs
倾销路线的输出:
dd(request()->route()->getName(),request()->route()->parameters());
//output:
"contactUs.edit"
array:2 [▼
"language" => "en"
"contactU" => "3"
]
默认情况下,在我们的代码中,我们应该从request()->route()->getName()
. laravel 路由名称有限制吗?如何解决这个问题?
提前致谢
解决方案
正如 lagbox 所说,这是由 Laravel 语法参数化引起的,它会自动将复数路由名称转换为单数变量名称。Laravel 认为contactUs
是contactU
. 如果您想contactUs
用作参数,只需通过添加如下方法来覆盖它->parameters()
:
Route::resource('contactUs', 'Cms\Auth\LoginController')->names('contactUs')->parameters(['contactUs' => 'contactUs']);;
推荐阅读
- php - 获取NULL的返回值
- python - 如果他们使用 discord.py 在某个频道中键入内容,是否有可能制作一个赋予角色的系统
- node.js - Node + Docker Compose:开发和生产设置
- arrays - 在数组中找到两个总和最大的非后续元素 - 面试问题
- r - 查找一列中的值的平均值,这些值在另外两列中共享一个共同值
- php - 在 opencart 版本 3.0.2.0 中发行货币 maj
- c++ - OpenCV 未处理的异常
- python-3.x - 如何在 plotly.express 中添加痕迹
- python - 如何在 python-pptx 中为 xyscatter 图表设置图表的字体大小、轴值和轴标题
- python - 加密货币中的 macd 寻址脚本