【问题标题】:How to display a flash message along with redirect without using Session in laravel?如何在不使用 Session 的情况下在 laravel 中显示 Flash 消息和重定向?
【发布时间】:2018-10-01 20:34:30
【问题描述】:

我有一部分代码检查用户上传的文件。如果我发现该文件不是有效的 png/jpg/jpeg 文件,那么我将停用用户并将他从站点注销并删除他的会话,然后将他重定向到登录页面。我想向他显示他/她试图上传无效文件的错误。如果不使用 Session,我无法找到任何关于如何显示它的信息。 任何帮助将不胜感激。

【问题讨论】:

  • 我想你要找的是return redirect()->route('whatever_route')->withErrors('whatever_the_error');
  • @TharakaDilshan 我试过了,但这不起作用。我认为这也会将错误存储在 Session 中,如果是这种情况,那么它将在我删除 Session 时被刷新。
  • 一件事是 Laravel 会话(Laravel cookie),另一件事是身份验证会话(登录)。当您注销用户时,Laravel 会话仍然存在,您可以使用错误包。如果你出于某种原因想要移除 Laravel Session,你需要为错误创建一个视图,或者将你自己的错误变量发送到 de view。
  • @Clemen 你能给我一个例子吗?

标签: laravel session


【解决方案1】:

您可以在刷新会话后创建新的会话消息,这些消息将在显示后删除

控制器

$is_valid // boolean 

if(!is_valid) {
// if file is not valid, do something
 ...
// clear all session
session()->flush()
// redirect user to login page and send session message
return redirect()->route("login")
                 ->with("message","Your file is not valid")
                 ->with("message_type","danger");

login.blade

@if(session()->has("message"))
<div class="alert alert-{{session("message_type")}}">
  <p> {{session("message")}} </p>
</div>
@endif

【讨论】:

  • 感谢我使用了它,它对我有用。首先,我将其重定向到注销 url,现在我正在删除会话本身并将其重定向到错误的登录页面
  • 它对我有用,但我们需要在路由中定义登录
【解决方案2】:

例如,如果您出于某种原因不想使用 session,这是一个简单的代码,用于在特定视图中显示错误消息,然后我们为用户提供再次登录的链接。

上传控制器.php

public function myUpload(){

  //... some stuff and then logout the user, delete the session

  return view('uploadError', ['uploadError' => 'for some reason...']);
}

uploadError.blade.php

Error uploading the file: {{ $uploadError }}

<a href="/login">Login again</a>

在您的情况下,您不能使用错误会话系统,因为当您删除它时,此时用户还没有会话,响应也没有会话。如果你从控制器重定向到登录页面,这个登录请求将生成新的会话,而不是之前。

【讨论】:

  • 我尝试了 Hasan 的方法,它对我有用,所以我暂时没有尝试过。谢谢您的帮助。 :)
猜你喜欢
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 1970-01-01
  • 2023-03-23
  • 2011-05-20
  • 1970-01-01
相关资源
最近更新 更多