php - 我们如何使用带有多个参数的 laravel URL?是否需要将每个参数指定为方法参数?不能通过Request访问它们吗?
问题描述
目前,我正在尝试以这种方式使用具有多个参数的 URL。例如,我会使用以下模式在 URL 中传递员工 ID、组 ID 和员工的当前状态。mydomain.com/en/employee/benefit-status/1-1-enroll
我定义的路线如下:
Route::get('{lang}/employee/benefit-status/{slug}', 'EmployeeBenefitController@create');
在我的控制器方法中,我分别访问参数。
create($lang,$slug)
这条路线运行良好。当我尝试通过 Request 对象访问参数时:
create(Request $request)
路线也可以正常工作,但在这种情况下,当我尝试导航到任何其他页面时。
例如,如果我单击带有此链接的菜单项“mydomain.com/en/candidates
URL 搞砸了,看起来像这样:
http://hrm.test:8080/GET%20/en/employee/benefit-status/1_1_enroll%20HTTP/1.1Accept:%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding:%20%20%20%20%20%20%20%20%20%20%20gzip,%20deflateAccept-Language:%20%20%20%20%20%20%20%20%20%20%20en-US,en;q=0.9Connection:%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20keep-aliveContent-Length:%20%20%20%20%20%20%20%20%20%20%20%20Content-Type:%20%20%20%20%20%20%20%20%20%20%20%20%20%20Cookie:%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20laravel_token=eyJpdiI6IktcL0tjd3REZnVoXC82c0lsTUZRUXp5Zz09IiwidmFsdWUiOiJyUlRBTU1ueUt5WHl0TUdSYURvMDRTaDFFN2ZwQ1RzTEl5Q2VQVjA5ODc3WEp3WkZBa2pudHkwOERjQzdsdFI5Y3k3c1hqMjMyOXJNeXdLK1VmZXVZSnhIYzF2MDM4ZDVld1JtMlBjU01XWDEzY3RyclBTcHFEQ0FIMmNpYWkrT1dIcDFLTHVTVFpxU3h3TE9QVXlCd1hCMXUyUzRVWDVHM2ZiNVFiQ1JrTmJXM292ZEVrVjBHVmZtaUZcLzV1U1lhMWdySk1pTXhwblcyY0Jxck1lK2lFOXFXb0plc2pCSTlLR083eGlPWXptN3hDMDEwZFlwbHF2clZ6dDQ4XC96ZzkiLCJtYWMiOiIyNzgxOGU4MGM1YzM1YjI1MTFkNzY1N2ZhZTg3Y2E4MDlmZDQwNTEyMjAwMjdjMTQxNjM5YzhjMDMwMzY1Yjk5In0%3D;%20XSRF-TOKEN=eyJpdiI6InNVRkUzeXB5ZVJaQTM5WmJxNmR1R2c9PSIsInZhbHVlIjoiN1dONmVuRU1QRytaQmR4bzZSR1dDVXJKRVptVTdzb0JwajNzMkNFRU1tVUJJc3EwMmpzMms4S3BoclFqbkJ1MCIsIm1hYyI6ImVmZDIxNDA1OGVlY2FmZDkxODg5ZTRkMzE0OWM2NTJlZjYyNjFhNDBmOTk2NzU1M2I0NWZlODM5OGZiMDcyNjgifQ%3D%3D;%20hrm_session=eyJpdiI6IjNjS2Vja1ZDVVpKUlU4YkxYdlwvbzNnPT0iLCJ2YWx1ZSI6IndCZ0VPZk9OXC9cL01SUGo5VEMwZVJEM0R5VnI0SDBLV1lVWldJemZkODVRRG1yTXpxeXBSdzc4ZUcyMzJ1VnlabiIsIm1hYyI6ImY1NWQ3MGFkYzZjNTljZjVmYzJhMWU5MjRkZjJiN2NhODk0ZTgxNjY3YWZmMjIzYzAzNDFlYWYyNzg0YmI2NjUifQ%3D%3DHost:%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hrm.test:8080Upgrade-Insecure-Requests:%201User-Agent:%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Mozilla/5.0%20(Windows%20NT%2010.0;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/79.0.3945.117%20Safari/537.36Cookie:%20laravel_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjEsImNzcmYiOiJvSkwzTkVmUEtQZUVWNlhnWVZ4UnNIZm13U2wwcGFjVkNrb0ZQNGtDIiwiZXhwaXJ5IjoxNTc5MzYxMzA2fQ.x1ibu7gHOIMgD73fXs90EdtHnLMb5J4cbgg3uDVYc8s;%20XSRF-TOKEN=oJL3NEfPKPeEV6XgYVxRsHfmwSl0pacVCkoFP4kC;%20hrm_session=MxkRkbJhiLlByPZncb6JqL87ATK0MH8mDLHhKIGg/candidates
解决方案
如果你像这样写你的路线会更好
Route::get('{lang}/employee/benefit-status/{employeeID}/{GoupPlanID}/{status}', 'EmployeeBenefitController@create');
URL 搞砸了可能是因为您没有通过提供错误的数据以正确的方式使用路由。
我更喜欢在发布请求中执行此操作,因为我猜您正在插入此数据。
推荐阅读
- php - 在不丢失中间件值的情况下获得预期的目标 URL
- javascript - 显示每个相册的所有照片后换行
- html - 如何将焦点设置在动态 FormArray 的第一个表单控件上?
- mod-rewrite - 用 if-not Condition 重写 Condition
- python - pybedtools bam_to_bed() 床
- java - 使用 maven-antrun-plugin 从类路径读取文件
- mono - 无论如何更新IL指令以使用新的局部变量索引?
- mysql - 有没有更好的方法在 sql 中编写 REGEXP 来选择唯一的事务号 R-0001 和 R-AD-0001
- javascript - 如何传递从 django 表单操作 url 的下拉列表中选择的项目的 id?
- python - 在父类中为返回任何子类对象的方法键入提示