Невозможно получить параметр get с закодированным символом '/' в Laravel, используя маршрут - PullRequest
0 голосов
/ 07 ноября 2019

Я новичок в Laravel и работаю над существующим кодом.

Я хочу передать некоторые значения в URL в формате URL / val1 / val2 / val3.

Все работает идеально, если все значения с нормальной строкой или числом

, но если любое значение имеет специальный символ, такой как косая черта / или \это показывает ошибки.

например. работает : - URL / abc / pqr / xys

, но если val3 = 22/06; URL-адрес URL / val1 / val2 / 22/06 показывает ошибку 404 не найдено

Если я закодировал val3 с помощью функции javaScript encodeURIComponent ()

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');

Ответы [ 3 ]

3 голосов
/ 07 ноября 2019
//routes.php
Route::get('view/{slashData?}', 'ExampleController@getData')
    ->where('slashData', '(.*)');
0 голосов
/ 07 ноября 2019

Для этой ситуации необходимо использовать выражение регулярного выражения:

Route::get('/export/{name}/{status}/{search}', 'ReportController@export')->name('export')->where(['search' => "[\w\/]+"]);
0 голосов
/ 07 ноября 2019

Ваш маршрут принимает только 3 параметра. Но вы передаете четыре параметра.

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

Вы должны изменить свой val3 = 22-06. Не используйте / как значение вашего параметра.

Например.

URL/val1/val2/22-06 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...