Laravel 5回显出包含刀片中html的会话变量

时间:2015-08-23 22:39:00

标签: php laravel laravel-5 blade

我在laravel中进行了重定向:

return redirect('admin')->with($returnData);

$ returnData是一个字符串,其中包含一个带有控制器结果的bootstrap info div。几乎所有东西都在工作,除非页面再次加载时它会在页面上显示html,就好像它是文本,括号和所有内容一样。如果我用这个:

@if(!empty(Session::get('error'))) {{ Session::get('error')}} @endif

然后它显示为纯文本。如果我将其更改为

<?php if(!empty(Session::get('error'))) { echo Session::get('error'); } ?>

工作正常。我很好,保持这样,但我宁愿使用Blade / Laravel作为它应该被使用,所以我想知道是否有办法让@if语句显示渲染的HTML而不是文本版本?

5 个答案:

答案 0 :(得分:23)

我建议只返回错误信息,然后在视图中创建div。因此,如果您要更改视图的布局,您可以在一个位置。

@if(Session::has('error'))
<div class="alert alert-danger">
  {{ Session::get('error')}}
</div>
@endif
希望这有帮助。

答案 1 :(得分:3)

要显示呈现的HTML,您应该在视图中使用{!! $variable->coontent !!},这会将您的HTML文本转换为呈现

答案 2 :(得分:2)

这个例子可以帮到你。 试试这个

 @if (session('Error'))
     <div class="alert alert-success">
         {{ session('Error') }}
     </div>
@endif

答案 3 :(得分:1)

如果你想不带任何HTML实体来显示从错误的纯文本,你可以简单地使用:

{{ Session::get('error') }}

{{ session('error') }}

如果你在你的变量HTML实体然后使用:

{!! Session::get('error') !!}

答案 4 :(得分:0)

尝试将您的刀片代码更改为以下内容。

@if(!empty(Session::get('error'))) 
    {!! Session::get('error') !!} 
@endif