laravel 5中的auth中间件截获表单提交
我一直在做一个Laravel5.7博客项目。我想评论一篇文章 我需要做到这一点:laravel 5中的auth中间件截获表单提交,laravel,laravel-5,laravel-middleware,Laravel,Laravel 5,Laravel Middleware,我一直在做一个Laravel5.7博客项目。我想评论一篇文章 我需要做到这一点: 在登录之前,我可以在评论文本区键入任何内容 我提交评论(当然它会被auth中间件截获) 然后我被重定向到登录页面 登录后,我希望我的应用程序可以自动提交以前的表单数据(或评论),而不是再次键入相同的评论 我认为这是当今许多网站中非常常见的业务逻辑,但我该如何实现这一点呢 我的评论如下: public function __construct() { $this->middleware('auth'
- 在登录之前,我可以在评论文本区键入任何内容
- 我提交评论(当然它会被auth中间件截获)
- 然后我被重定向到登录页面
- 登录后,我希望我的应用程序可以自动提交以前的表单数据(或评论),而不是再次键入相同的评论
- 我认为这是当今许多网站中非常常见的业务逻辑,但我该如何实现这一点呢
public function __construct()
{
$this->middleware('auth');
}
public function store(Post $post) {
$comment = Comment::create([
'body' => session('comment')?:request('body'),
'post_id' => $post->id,
'user_id' => auth()->user()->id
//before logging in, you don't have an user_id yet.
]);
return back()->with('success', 'Add comment succeeded');
}
web.php路径如下:
Route::post('/posts/{post}/comments', 'CommentsController@store')->name('addComment');
基本上,auth中间件拦截了我的表单数据提交,我想用我的表单数据遍历auth中间件。登录后没有丢失它们。我认为解决您问题的方法是:
这是解决方案。有点棘手。在转到身份验证中间件之前,先将注释保存到会话中。登录后,获取该路径以创建注释。 路线: 财务主任评论:
public function __construct()
{
$this->middleware('auth', ['except' => ['commentSave']]);
}
public function commentSave(Request $request){
$url = \URL::previous();
session(['comment' => $request->input('body')]);
return redirect("$url/comments");
}
public function store(Post $post){
if(session('comment')){
$comment = Comment::create([
'body' => session('comment'),
'post_id' => $post->id,
'user_id' => auth()->user()->id
]);
session(['comment' => null]);
return redirect("posts/$post->id")->with('success', 'Add comment succeeded');
}
return redirect("posts/$post->id");
}
你是对的,我就知道。直到昨天我才知道怎么做。
public function __construct()
{
$this->middleware('auth', ['except' => ['commentSave']]);
}
public function commentSave(Request $request){
$url = \URL::previous();
session(['comment' => $request->input('body')]);
return redirect("$url/comments");
}
public function store(Post $post){
if(session('comment')){
$comment = Comment::create([
'body' => session('comment'),
'post_id' => $post->id,
'user_id' => auth()->user()->id
]);
session(['comment' => null]);
return redirect("posts/$post->id")->with('success', 'Add comment succeeded');
}
return redirect("posts/$post->id");
}