繁体   English   中英

Laravel 会话 Flash 消息不起作用

[英]Laravel session Flash Message Not working

会话消息不起作用我试过这个代码和许多在线可用的修复这里id我的商店功能`

public function store(Request $request)
    {
        // dd($request->all());
        $this->validate($request, [
            'name'      =>'required',
            'username'  =>'required',
            'email'     =>'required',
            'address'   =>'required',
            'likes'     =>'required',
            'gender'        =>'required'

        ]);

        $input = $request->all();

        Contacts::create($input);

        Session::put('flash_message', 'Task successfully added!');
        return redirect()->back();
    }

并通过此代码检索

@if(Session::has('flash_message'))
        <div class="alert alert-success">
            {{ Session::get('flash_message') }}
        </div>
@endif

我解决了 laravel 6.x 的问题

一旦我将\\Illuminate\\Session\\Middleware\\StartSession::class\\Illuminate\\View\\Middleware\\ShareErrorsFromSession::class从 web $middlewareGroupsapp\\Http\\Kernel.php $middleware ,一切都开始按预期工作。

我用 laravel 5.2 解决了这个问题。

我有这样的路线

Route::group(['middleware' => [ 'web','auth']], function () {
.......
}

所以去掉了web中间件

Route::group(['middleware' => ['auth']], function () {
.......
}

并开始工作

分析:默认 Laravel 添加 web 中间件。 通过 php artisan route:list 检查它显示 web, web,auth 。

所以通过再次定义它为 web 中间件重定向两次。

我用 Laravel 5.2 解决了这个问题。

我在里面有所有的路线:

Route::group(['middleware' => 'web'], function() {

我删除它是因为当我在 Name Middleware 列中使用命令 php artisan route:list 时,“web”显示为 times: web, web.

如果您有 AUTH 替换为:

Route::group(['middleware' => 'auth'], function() {

我也删除了一个重复的路由(在路由.php 中)。 现在我只有:

Route::resource('/publicaciones', 'PublicacionesController');

我的控制器

return redirect()->back()->with('success', 'Saved!'); 

我的观点

  @if(Session::has('success'))
          <div class="alert alert-success">
              {{ Session::get('success') }}
          </div>
  @endif

您是否包含以下命名空间

use Session;

而不是下面的代码

 Session::put('flash_message', 'Task successfully added!'); 

 Session::flash('flash_message', 'Task successfully added!');

在而不是

return redirect()->back();

尝试使用

 return redirect()->route('your route');

这个论坛有点晚了。 我遇到了这个问题,我一直在不同的网站上寻找正确的解决方案,但都没有奏效。 这是我的情况,我使用的是v6.0 ,我将路由放在routes\\api.php

我认为将route放在正确的地方或文件中是有区别的,无法解释更多。

这是我解决的方法,我将路由从routes\\api.phproutes\\web.php ,经过大量研究,我现在成功显示了 flash 消息。

试试这个代码

Session::flash('flash_message', 'Task successfully added!');
Session::save();
return redirect()->back();

这对我有用

如果“会话”无法在您的刀片视图中显示错误,这将起作用。

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

当验证失败时,不再执行任何代码并再次加载上一页。 这就是会话消息不起作用的原因。 为了检查任何验证错误,请使用刀片文件顶部的以下代码片段。

@if ($errors->any())
  @foreach ($errors->all() as $error)
    <div class="alert alert-danger alert-block">
      <button type="button" class="close" data-dismiss="alert">×</button>
      <strong>{{ $error }}</strong>
    </div>
  @endforeach
@endif

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM