You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP8升级后模板遍历GroupedList时如何检查Null元素?

解决方案

在循环里先过滤掉Null项,再处理字段访问,避免触发PHP8的类型严格检查报错:

<% loop $indices %>
  <% if $Me %>
    <% if $fileName %>
      $fileName
    <% end_if %>
  <% end_if %>
<% end_loop %>

细节说明

  • $Me是SilverStripe模板里代表当前循环项的变量,直接判断$Me就能过滤掉Null值,从根源避免后续访问$fileName时触发method_exists()的类型错误。
  • 要是你的循环项是数组而非SilverStripe数据对象,可以再加一层数组有效性判断:
    <% loop $indices %>
      <% if $Me && $Me.isArray %>
        <% if $fileName %>
          $fileName
        <% end_if %>
      <% end_if %>
    <% end_loop %>
    

后端预处理方案(可选)

如果不想在模板里做判断,也可以在后端获取数据时提前过滤Null项,比如在控制器里:

public function getIndices()
{
    $apiData = $this->fetchThirdPartyApiData(); // 你的API调用逻辑
    // 过滤掉Null元素
    return $apiData->filterByCallback(fn($item) => $item !== null);
}

内容的提问来源于stack exchange,提问作者Will

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:50:25