슬래시 문자를 포함하는 매개 변수를 사용하여 Laravel 경로를 정의하는 방법
슬래시를 포함하는 매개 변수를 사용하여 경로를 정의합니다./
그런 성격example.com/view/abc/02
어디에abc/02
는 매개 변수입니다.
어떻게 하면 라라벨이 슬래시를 다음 경로 매개 변수의 구분 기호로 읽지 못하게 할 수 있습니까?그것 때문에 저는 그것을 받고 있습니다.404 not found error
지금이다.
아래 캐치올 경로를 아래에 추가합니다.routes.php
그리고 달리는 것을 기억하세요.composer dump-autoload
사후에슬래시를 포함하는 매개변수를 사용할 수 있도록 매개변수의 가능한 내용을 지정하는 "->where"를 사용합니다.
//routes.php
Route::get('view/{slashData?}', 'ExampleController@getData')
->where('slashData', '(.*)');
또한 컨트롤러보다 일반적인 방식으로 데이터를 처리합니다(슬래시가 포함되지 않은 것처럼).
//controller
class ExampleController extends BaseController {
public function getData($slashData = null)
{
if($slashData)
{
//do stuff
}
}
}
이것은 당신에게 효과가 있을 것입니다.
또한 경로 매개 변수에 대한 자세한 Laravel 문서가 있습니다. [docs]
비슷한 문제가 있지만 URL에 다음과 같은 경로 매개 변수가 있습니다.
/test/{param1WithSlash}/{param2}/{param3}
그리고 제가 그 사건을 처리한 방법은 다음과 같습니다.
Route::get('test/{param1WithSlash}/{param2}/{param3}', function ($param1MayContainsSlash, $param2, $param3) {
$content = "PATH: " . Request::path() . "</br>";
$content .= "PARAM1: $param1WithSlash </br>";
$content .= "PARAM2: $param2 </br>".PHP_EOL;
$content .= "PARAM3: $param3 </br>".PHP_EOL;
return Response::make($content);
})->where('param1MayContainsSlash', '(.*(?:%2F:)?.*)');
도움이 되길 바랍니다.
URL 인코딩 슬래시는 버그로 인해 Laravel에서 작동하지 않습니다.https://github.com/laravel/framework/pull/4323 이 꺼내기 요청은 해당 버그를 해결합니다.
갱신하다.
경로의 값을 디코딩하기 전에 경로를 구문 분석할 수 있습니다.
인 라라벨 8+
Route::get('/search/{search}', function ($search) {
return $search;
})->where('search', '.*');
참조:
https://laravel.com/docs/routing#parameters-encoded-forward-slashes
저는 이미 피에르의 대답에 찬성표를 던졌습니다. 그것은 옳지만, 제 생각에는 필요 이상으로 긴 것 같습니다. 여기 그 묘책을 보여주는 아주 짧은 환자 샘플 경로가 있습니다.
Route::get('post/{slug}', [PostController::class, 'show'])->where('slug', '[\w\s\-_\/]+');
이것이 당신이 필요한 전부입니다.정말로, 그\/
위의 정규 표현으로 (에서)where
method)만 있으면 됩니다!
예를 들어, 다음과 같습니다.
- 도메인/A ---> "A"가 다음으로 전달됩니다.
show
의 방법PostController
. - 도메인/A/B ---> "A/B"가 다음으로 전달됩니다.
show
의 방법PostController
. - 도메인/A/B/C ---> "A/B/C"가 다음으로 전달됩니다.
show
의 방법PostController
. - 등등...
더 많은 샘플은 다음을 참조하십시오: Larvel Documentation - 정규식 제약 조건
언급URL : https://stackoverflow.com/questions/21552604/how-to-define-a-laravel-route-with-a-parameter-that-contains-a-slash-character
'source' 카테고리의 다른 글
컴파일러 경고 '임의적 함수 선언 memset'을 해결하는 방법 (0) | 2023.07.31 |
---|---|
MySQL 인덱스 및 순서 (0) | 2023.07.31 |
최대 절전 모드에서 열거형, 열거형으로 지속 (0) | 2023.07.31 |
iPhone App에서 SSL 사용 - 규정 준수 내보내기 (0) | 2023.07.31 |
수백 개의 Oracle 인스턴스를 하나의 인스턴스로 통합하는 지혜 (0) | 2023.07.31 |