Lumen 中 Request 要这样拿到 route 中的 parameter
Laravel 中获取 route 中的 parameter 的方法:
//假设 route 是这样的:
$router->resource('posts.comments', PostCommentController::class);
//获取的方法:
$postId = $request->posts;
$commentId = $request->comments;
Lumen 中的 routeResolver 有点不太一样,不能这样:
$postId = $request->posts;
也不能这样:
$postId = $request->route('posts');
报错:Call to a member function parameter() on array
所以正确的做法是自己解析:$request->route()
,略坑。
有人写了一个 helper 的方法:
if (!function_exists('route_parameter')) {
/**
* Get a given parameter from the route.
*
* @param $name
* @param null $default
* @return mixed
*/
function route_parameter($name, $default = null)
{
$routeInfo = app('request')->route();
return array_get($routeInfo[2], $name, $default);
}
}
就这么用吧。
可能你会问我为什么要自己去 request 中拿 route 的 parameter,因为我在 policy 中要用。
很棒,代码好用!和 laravel 不一样还是因为 lumen 的路由使用的是 https://github.com/nikic/FastRoute 而不是 laravel router 的原因。正因为这样,Form Requests 也不能在 lumen 下使用了。
@zhuzhichao 赞
路由group 的嵌套问题是个硬伤
改了改。。。。