我们如何将 laravel URL 与多个参数一起使用?是否需要将每个参数指定为方法参数?我们不能通过请求访问它们吗?
How we use laravel URL with multiple parameters? Is it necessary to specify each parameter as method argument?Can't we access them through Request?
目前,我正在尝试以这种方式使用具有多个参数的 URL。
例如,我将使用以下模式在 URL 中传递员工 ID、组 ID 和当前状态。
我的域名。com/en/employee/benefit-status/1-1-enroll
我定义的路由如下:
Route::get('{lang}/employee/benefit-status/{slug}', 'EmployeeBenefitController@create');
在我的控制器方法中,我单独访问参数。
create($lang,$slug)
这条路线运行良好。
当我尝试通过 Request 对象访问参数时:
create(Request $request)
路由也能正常工作,但在这种情况下,当我尝试导航到任何其他页面时。
例如如果我单击带有此 link "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 搞砸了可能是因为您没有通过提供错误的数据以正确的方式使用路线。
我更喜欢在 post 请求中这样做,因为我猜你正在插入这些数据。
目前,我正在尝试以这种方式使用具有多个参数的 URL。 例如,我将使用以下模式在 URL 中传递员工 ID、组 ID 和当前状态。 我的域名。com/en/employee/benefit-status/1-1-enroll
我定义的路由如下:
Route::get('{lang}/employee/benefit-status/{slug}', 'EmployeeBenefitController@create');
在我的控制器方法中,我单独访问参数。
create($lang,$slug)
这条路线运行良好。 当我尝试通过 Request 对象访问参数时:
create(Request $request)
路由也能正常工作,但在这种情况下,当我尝试导航到任何其他页面时。
例如如果我单击带有此 link "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 搞砸了可能是因为您没有通过提供错误的数据以正确的方式使用路线。
我更喜欢在 post 请求中这样做,因为我猜你正在插入这些数据。