无法使用路由在 Laravel 中获取带有编码“/”的获取参数

Unable to fetch get parameter with encoded '/' in Laravel using route

我是 Laravel 的新手,正在处理现有代码。

我想以 URL/val1/val2/val3 的格式在 url 中传递一些 .

如果所有值都具有正常字符串或数字

,则一切正常

但如果任何值具有特殊字符,如 slash / 或 \,则显示错误。

例如。 工作 :- URL/abc/pqr/xys

但如果 val3 = 22/06 ;url 是 URL/val1/val2/22/06 错误显示 404 未找到

如果我使用 javaScript 的函数 encodeURIComponent()

对 val3 进行编码

val3=22%2F06 和 url 变为 URL/val1/val2/22%2F06 显示 找不到对象!

 // My current route web.php is:-

    Route::get('/export/{name}/{status}/{search}', 'ReportController@export')->name('export');
//routes.php
Route::get('view/{slashData?}', 'ExampleController@getData')
    ->where('slashData', '(.*)');

您的路由只接受 3 个参数。但是你传递了四个参数。

Route::get('/export/{name}/{status}/{search}', 'ReportController@export')->name('export');

您必须更改您的 val3=22-06。不要使用 / 作为参数的值。

例如。

URL/val1/val2/22-06 

您需要在这种情况下使用正则表达式:

Route::get('/export/{name}/{status}/{search}', 'ReportController@export')->name('export')->where(['search' => "[\w\/]+"]);