【问题标题】:Laravel 8: How to redirect user after updatation processLaravel 8:更新过程后如何重定向用户
【发布时间】:2021-03-10 05:54:08
【问题描述】:

我正在使用 Laravel 8 开发我的论坛项目,目前我已经创建了一个页面,用户可以编辑他们的答案。这是表格:

   <form action="{{ route('update.answer', [$anss->id, $que->id]) }}" method="POST">
        @csrf
        <textarea name="answer" id="answer" class="form-control" rows="7">{{ $ans->answer }}</textarea>
        @error('answer')
            <div class="text-red-500 mt-2 text-sm">
                {{ $message }}
            </div>
        @enderror
        <button type="submit" class="text-blue-500 BJadidBold">Update</button>
    </form>

然后在 Controller 方法中,我添加了这个:

public function updateAnswer(Answer $anss, Question $que)
    {
        $validate_data = Validator::make(request()->all(),[
           'answer' => 'required'
        ])->validated();

        $answer = Answer::findOrFail($anss);
        $answer->update($validate_data);
    }

这里是路线:

Route::post('questions/{anss}/{que}' , [QuestionController::class, 'updateAnswer'])->name('update.answer');

现在我想将用户重定向到这样的网址:

http://localhost:8000/questions/question-slug-example

但是,通过此代码,用户将重定向到此 url:

http://localhost:8000/questions/answer_id_example/question-slug-example

那么我怎样才能更正确地做到这一点呢?

如果您就此与我分享您的想法或建议,我将不胜感激......

谢谢。

【问题讨论】:

标签: php laravel laravel-8


【解决方案1】:

您不能重定向到 POST 类型的路由。它必须是 GET 类型。要重定向,您可以使用:

return redirect('/questions/example/example');

【讨论】:

  • 我没有说我想重定向到 POST 方法。包含在问题中的那条路线用于更新
  • 对不起,我知道您想重定向到该路线。无论如何,你可以使用'return redirect'来重定向。
【解决方案2】:

如果你的路由类型是 get 并且它的命名路由,那么你可以像这样重定向

return redirect()->route('route_name')->with(['data' => $data]);

如果您的路线类型是 get 并且您没有指定路线的名称,那么

return redirect('/any_route_url_defined_in_web.php')->with(['data' => $data]);

【讨论】:

    【解决方案3】:

    完成更新过程后,您可以使用此代码重定向用户。

    return redirect('redirect url')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-25
      • 2018-05-04
      • 2021-06-09
      • 1970-01-01
      • 2021-12-27
      • 2021-08-25
      • 2021-03-17
      • 1970-01-01
      相关资源
      最近更新 更多