laravel:redirect()->back()->with() 不发送任何消息

Posted

技术标签:

【中文标题】laravel:redirect()->back()->with() 不发送任何消息【英文标题】:laravel : redirect()->back()->with() not sending any messages 【发布时间】:2016-06-11 23:53:11 【问题描述】:

我按照提供给this question 的答案做了 但它对我不起作用。所以我重新问了这个问题。 我的控制器是

public function save() 

        $med_group = MedicineGroup::create(Request::all());

        if ($med_group) 
            $this->setServerMessage('MedicineGroup created successfully');
            return Redirect::to('admin/user/create')->with('flashmessage',$this->getServerMessage());

        
    

我在 Controller.php 中做了 setServerMessage() 和 getServerMessage()

public function setServerMessage($messagearray) 
        if (is_array($messagearray)) 
            $type = $messagearray['type'];
            $html = "<div style='height:auto;padding:7px 0px 6px 20px;margin:0px' class = 'pull-left text-left col-md-8 alert alert-$type'>$messagearray[0]</div>";
         else 
            $html = "<div style='height:33px;padding:7px 0px 6px 20px;margin:0px' class = 'pull-left text-left col-md-8 alert alert-info'>$messagearray</div>";
        
        $temp = '';
        if (\Session::get('SERVER_MESSAGE')) 
            $temp = \Session::get('SERVER_MESSAGE');
        
        \Session::put('SERVER_MESSAGE', $temp . $html);
    

public function getServerMessage() 

        if (\Session::get('SERVER_MESSAGE')) 
            $temp = \Session::get('SERVER_MESSAGE');
            \Session::forget('SERVER_MESSAGE');
            return $temp;
         else
            return "";
    

我的视图是这样设置的

<div class="box-footer text-right">
                @include('flash')
                <input type="submit" class="btn btn-success" value='Save'>
                <input type="reset" class="btn btn-primary" value='Reset' />
                <a href="#" class="btn btn-danger">Cancel</a>
            </div>

在我的 flash.blade.php 中我已经写了

@if(isset($flashmessage))
   !! $flashmessage !!
@endif

我错过了什么?我关注了this site too,但我无法在我的视图中闪现消息。

【问题讨论】:

【参考方案1】:

设置flash消息,然后重定向到所需的路由

控制器:

  session()->flash('msg', 'Successfully done the operation.');
  return Redirect::to('admin/user/create');

现在在视图刀片文件中获取消息

刀片

 !! Session::has('msg') ? Session::get("msg") : '' !!

【讨论】:

【参考方案2】:
every other thing seems to be fine except for your layout 

laravel would escape the variable you are passing into the session while using this 

@if(isset($flashmessage))
   **!! $flashmessage !!**
@endif

you should do this instead 

@if(isset($flashmessage))
   ** $flashmessage **
@endif

【讨论】:

不..没用。如果我在 Controller 中执行 dd($this->getServerMessage()) ,我可以看到我的 flash 消息,但是为什么我不能在 flash.blade.php 中打印该消息而奇怪的是我 无法打印 它甚至在我将其重定向到的同一控制器上的 create() 函数中。 这就是为什么您不会收到消息 \Session::forget('SERVER_MESSAGE');您正在从会话中删除消息在此处阅读有关会话的更多信息laravel.com/docs/5.0/session【参考方案3】:

试试这个东西,我正在替换你的整个代码,你可以根据需要更改它:

public function save()

    $med_group = MedicineGroup::create(Request::all());

    if ($med_group) 
        //$this->setServerMessage('MedicineGroup created successfully');

        // flash method to be used when just printing the message
        // on the screen. Link below
        \Session::flash('key', 'Your message here...');

        return Redirect::to('admin/user/create');

    

在您的视图文件中:

@if(Session::has('key))
     Session::get('key') 
@endif

Link for more information

【讨论】:

以上是关于laravel:redirect()->back()->with() 不发送任何消息的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 - 无法从 redirect::route 获取参数

如何在 Ajax 请求中重定向回 Laravel 8 中的错误

Laravel 4 Redirect :: back()不会转到上一页(刷新当前页面)

Laravel - 使用 Redirect::route() 添加斜杠

Laravel5 - 重定向 redirect 函数的详细使用

为 POST 视图返回 Redirect::back Laravel