Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
laravel 5中的auth中间件截获表单提交_Laravel_Laravel 5_Laravel Middleware - Fatal编程技术网

laravel 5中的auth中间件截获表单提交

laravel 5中的auth中间件截获表单提交,laravel,laravel-5,laravel-middleware,Laravel,Laravel 5,Laravel Middleware,我一直在做一个Laravel5.7博客项目。我想评论一篇文章 我需要做到这一点: 在登录之前,我可以在评论文本区键入任何内容 我提交评论(当然它会被auth中间件截获) 然后我被重定向到登录页面 登录后,我希望我的应用程序可以自动提交以前的表单数据(或评论),而不是再次键入相同的评论 我认为这是当今许多网站中非常常见的业务逻辑,但我该如何实现这一点呢 我的评论如下: public function __construct() { $this->middleware('auth'

我一直在做一个Laravel5.7博客项目。我想评论一篇文章

我需要做到这一点:

  • 在登录之前,我可以在评论文本区键入任何内容
  • 我提交评论(当然它会被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");         
}