Laravel-结合{!! ... !!}和asset('image / my.png')导致资产代码打印不显示图像

时间:2019-03-07 10:50:38

标签: php laravel laravel-blade

正如标题所述,我尝试使用{!! ... !!}显示HTML代码,HTML代码来自数据库。但是,当代码具有asset('image/my.png')时,它不会显示图像,否则,它将显示代码asset('image/my.png')

如何使用显示图像:

asset('image/my.png') 

代码:

<div>
<img src="{{ asset('images/my1.png') }}
{!! <img src="{{ asset('images/my2.png') }}" /> !!}
</div>

但是需要在刀片视图之间附加来自数据库的HTML代码吗?

2 个答案:

答案 0 :(得分:1)

{!! !!}将输出提供的原始字符串,因此不会评估刀片模板。相反,您可以执行以下操作:

  //Just to know what we're talking about
  $databaseString = "<img src=\"{{ asset('images/my2.png') }}\" />"; 
  $compiled = Blade::compileString($databaseString);
  // $compiled = <img src="<?php echo e(asset('images/my2.png')); ?>" />

要显示它,您可以使用:

  <div>
      {!! eval("?>".$compiled) !!}
  </div>

当然,这通常带有从不使用它来运行不受信任的代码

答案 1 :(得分:0)

您可以使用:

<div>
     <img src="{{ asset('images/my1.png') }}
     $myDatabase = "<img src="{{ asset('images/my2.png') }}" />";
     {{html_entity_decode($myDatabase);}}
</div>