【问题标题】:Laravel 5.6 - Grab message from Controller into viewLaravel 5.6 - 从控制器抓取消息到视图中
【发布时间】:2019-04-13 02:46:47
【问题描述】:

我从 Laravel 开始,我需要将发布请求的输出显示到视图中。我的控制器文件返回一个带有消息的数组,如下所示:

return redirect('/myroute')
            ->with('message', [
                'type' => 'success', 
                'text' => 'It works'
            ]);

在我的视图文件中,我试图获取消息文本,但没有成功。请参阅下面的代码

@if(Session::has('message'))
    {{ $msg = Session::get('message') }}
    <h4>{{ $msg->text }}</h4>
@endif

重点是:条件有效,如果我将 {{$msg->text}} 更改为任何有效的文本,但是当我尝试获取消息文本时,它会返回错误:

htmlspecialchars() 期望参数 1 是字符串,给定数组

因此,我们非常感谢任何帮助。如果需要更多信息,请询问。

PS:我检查了this question,但完全没有成功 编辑: PS2:无法更改控制器结构

【问题讨论】:

  • 您检查过$msg 的确切内容吗?尝试dump到controller中看看是不是数组,对象,字符串,......
  • @NicoHaase 我试图将它 {{var_dump($msg)}} 转储到模板中,但仍然出现同样的错误

标签: php laravel


【解决方案1】:

尝试如下访问数组:

<h4>{{ $msg['text'] }}</h4>

或者只是传递一个包含项目的数组

->with([
            'type' => 'success', 
            'text' => 'It works'
        ]);

//in the view
@if(session()->has('text'))
    <h4> {{ session('text') }} </h4>
@endif

-- 编辑

像这样遍历会话:

@foreach (Session::get('message') as $msg)
  {{$msg['text']}}
@endforeach

你可以阅读更多关于 here

【讨论】:

  • 这对我来说没有用,同样的错误。无法更改控制器结构。我也试过 {{$msg->text}} 并且错误仍然存​​在。
  • 然后您必须遍历会话才能访问您的项目。看看我上面的编辑
  • 非常感谢,但仍然无法正常工作,现在的错误消息是 'Illegal string offset 'text''
【解决方案2】:

改为这样做

return redirect('/myroute')->with('success','It worked');

那么在你看来

{{session('success')}}

【讨论】:

  • 不幸的是我无法更改控制器结构
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-16
  • 2018-09-26
  • 2018-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多