【问题标题】:htmlspecialchars() expects parameter 1 to be string, array given in laravel bladehtmlspecialchars() 期望参数 1 是字符串,laravel 刀片中给出的数组
【发布时间】:2020-04-08 22:39:32
【问题描述】:

我正在执行审计,比较 old_values 和 new_values 字段。 所做的所有修改都存储在列中(old_values 和 new_values),以 TEXT 格式。 我想显示已修改并对应于 new_values 的字段有问题 ​我的审计表的列。这就是我毫无问题地遍历 old_values 列的方式:

<td>
    <table class="table table-bordered table-hover" style="width:100%">
        @foreach($audit->old_values as $attribute => $value)         
          <tr>
             <td><b>{{ $attribute  }}</b></td>                                         
             <td>{{  $value }}</td>                                                                      
          </tr>                                  
         @endforeach
     </table>
</td>

所以我对new_values列应用同样的,无法访问修改:

<td>
    <table class="table table-bordered table-hover" style="width:100%">
        @foreach($audit->new_values as $attributee => $value)         
          <tr>
             <td><b>{{ $attributee }}</b></td>                                         
             <td>{{  $value }}</td>                                                                      
          </tr>                                  
         @endforeach
     </table>
</td>

这是错误:

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

所以我尝试了以下方法:1) 使用 dd ($ audit-> new_values) 检查 结果:

array:4 [▼
  "category_id" => "2"
  "title" => "Mi cuarto post edit"
  "excerpt" => "Extracto de mi cuarto post edit"
  "body" => "<p>Contenido de mi cuarto post edit</p>"
]

2) 然后用array_get探测结果:

  <td>{{ array_get($value, 'value.category_id'. default) }} </td>    

这是我的审计表:我想显示以红色突出显示的行的数据(new_values):

谁能帮我解决这个问题?如何正确循环遍历我的阵列?

更新 1

通过创建新帖子执行新测试,然后编辑同一帖子以比较 old_values 和 new_values 字段。 检查我在第 62 行收到此错误

【问题讨论】:

  • @Helioarch 检查 dd($audit-> new_values ​​()) array:4 [▼ "category_id" =&gt; "2" "title" =&gt; "Mi cuarto post edit" "excerpt" =&gt; "Extracto de mi cuarto post edit" "body" =&gt; "&lt;p&gt;Contenido de mi cuarto post edit&lt;/p&gt;" ]
  • 可能是另一种相同的错误消息:stackoverflow.com/questions/46210547/…
  • 你在哪里dd()ing?我在刀片中要求 var dump/dd,因为我试图确保在循环之前没有其他代码正在修改 $audit-&gt;new_values..
  • @Helioarch 我在执行 {{var_dump ($ audit-> new_values)}} 时遇到问题,它只是给我抛出了同样的错误,我在它通过循环之前对其进行测试,任何建议?
  • 哦,对不起,我提出了错误的建议。你可以在刀片循环之前执行@dd($audit-&gt;new_values)@php(dd($audit-&gt;new_values))

标签: php json laravel matrix


【解决方案1】:

根据您的评论和编辑,您似乎有一个数组形式的值,因此您可以尝试使用 {{ is_array($value2) ? json_encode($value2) : $value2 }} 将其打印为字符串

【讨论】:

  • 谢谢我处理这个问题很久了,您可以按照指示解决。问题出在我存储日期的 publish_at 字段中。日期对我很重要,我怎样才能只显示日期?在 publish_at 我得到了所有这些{"date":"2020-04-08 00:00:00.000000","timezone_type":3,"timezone":"America\/Argentina\/Buenos_Aires"} 并且只想要日期。如何显示日期?
  • @RodrigoRuiz 您必须在您的 publish_at 字段中显示数据示例以及您的预期结果。但请将其作为另一个问题发布以保持清洁。
【解决方案2】:

出于某种原因,为了在命名变量时消除任何命名问题,我使用其他名称在任何集合中循环或做一些事情。 您是否也尝试过循环:

<table class="table table-bordered table-hover" style="width:100%">
    @foreach($audit->new_values as $attribute2 => $value2)         
      <tr>
         <td><b>{{ $attribute2 }}</b></td>                                         
         <td>{{ $value2 }}</td>                                                                      
      </tr>                                  
     @endforeach
 </table>

【讨论】:

  • 我按照他的建议更改了我指出的变量名称,但我收到了同样的错误,我问他一个问题,因为如果我使用 array_get 它不会抛出任何错误,但是在这个如果它没有给我带来价值,请看我的第一张图片
猜你喜欢
  • 2018-08-04
  • 2018-02-22
  • 2018-11-10
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 2017-07-12
  • 2017-03-22
相关资源
最近更新 更多