这让我发疯,因为我认为我做的是正确的,但是它无法正常工作。
我有route
附加middleware
,如下所示;
Route::get('post/{id}/{name}', 'BlogController@post')->name('blog-post')->middleware('blogGuard');
正如您所看到的,我已经定义了2条路线参数 在我的控制器中,我在下面;
public function post () {
return view('pages.blog.post');
}
中间件定义如下;
public function handle($request, Closure $next)
{
if (is_null($request->input('id')) ||
is_null($request->input('name'))) {
return redirect()->route('blog-home');
}
return $next($request);
}
现在,如果我点击这样的链接; http://blog.example.co.uk/post/153/firstpost
middleware
不应该点正确吗?
事实并非如此。 middleware
执行,我被重定向。但是,如果我删除了middleware
,那么我就可以访问该页面了。
任何帮助表示感谢。
答案 0 :(得分:1)
如果您尝试访问路线参数,您可能希望从路线中明确地获取它们。
$request->route('id'); // pulls the $route->parameter('id');
$request->route('name'); // pulls the $route->parameter('name');
$request->id
将在返回返回路由参数之前检查请求输入。
$request->input('id')
只会检查请求的输入源,而不是路由参数。
如果您使用$request->id
期望获得路线参数' id',可以通过将id=anythinghere
传递给查询字符串或添加' id&#来破坏您的逻辑39; var发布请求。
答案 1 :(得分:0)
试试这个
if (!$request->id ||
!$request->name)