如何使用包含斜杠字符的参数定义 Laravel 路由
我想定义一个带有参数的路由,该参数将包含斜杠字符,就像参数在哪里一样。/
example.com/view/abc/02
abc/02
如何防止Laravel读取斜杠作为下一个路由参数的分隔符?正因为如此,我现在得到了一个。404 not found error
我想定义一个带有参数的路由,该参数将包含斜杠字符,就像参数在哪里一样。/
example.com/view/abc/02
abc/02
如何防止Laravel读取斜杠作为下一个路由参数的分隔符?正因为如此,我现在得到了一个。404 not found error
将下面的包罗万象的路线添加到您的底部,并记得之后运行。请注意,使用“->where”来指定参数的可能内容,使您能够使用包含斜杠的参数。routes.php
composer dump-autoload
//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:)?.*)');
希望它能有所帮助。