【问题标题】:How to solve PHP ACF error: "Trying to access array offset on value of type bool"?如何解决 PHP ACF 错误:“尝试访问 bool 类型值的数组偏移量”?
【发布时间】:2020-09-17 09:55:16
【问题描述】:

我一直在开发自己的主题,不得不使用我的 Laravel Sage 环境使用 ACF 制作一些自定义块。

我的目标是从转发器对象中检索文本列表。 (成功运行,但仍然显示错误)。

所以抛出该错误的代码如下:

page.blade.php:

@php
  $tv_lists = [];
  while (have_rows('tv_lists')) {
    the_row();
    $tv_lists[] = [
      'tv_list' => get_sub_field('tv_list'),
    ];
  }
@endphp

@if(get_field('tv_lists'))
          <div class="tv-lists col-12 col-md-8 col-lg-9 block-image">
            @foreach($tv_lists as $tv_list)
              @if(!empty($tv_list['tv_list']))
                <div class="tv-list quote-content">
                  <a class="tv-list-text">{{ $tv_list['tv_list'] }}</a>
                </div>
              @endif
            @endforeach
          </div>
        @endif

然后在page.php中负责创建repeater块的PHP代码如下:

->addRepeater('tv_lists', [
    'conditional_logic' => [[['field' => 'links_type', 'operator' => '==', 'value' => 'list']]],
    'label' => 'TV Lists',
    'layout' => 'block',
  ])
    ->addText('tv_list', [
      'label' => 'TV List',
    ])
    ->endRepeater()

提前感谢所有花时间阅读本文的人。

【问题讨论】:

  • 在此之前你可能需要一个if(get_field('tv_list'))
  • @HowardE 当我放那个 if 语句时,列表不再显示它应该显示的位置,并且仍然显示错误。
  • @HowardE 实际上,一旦我将 if 语句添加到两个字段,它就起作用了。它还必须是 tv_lists 而不是列表。链接也一样。您应该作为正式答案做出回应,以便我可以将其投票为已关闭:)

标签: php wordpress laravel roots-sage


【解决方案1】:

while 之前需要一个 if 语句

所以你想做这样的事情。

@php
  $tv_lists = [];
  if (have_rows('tv_lists'){
    while (have_rows('tv_lists')) {
      the_row();
      $tv_lists[] = [
        'tv_list' => get_sub_field('tv_list'),
      ];
    }
  }
@endphp

【讨论】:

  • 非常感谢!这就像解决这个错误的魅力!因为我试图添加 2 个选项中的 1 个,所以当添加 1 个时,另一个是空的,反之亦然。所以我必须确保它检查它是否有行,而不是假设两者都应该存在。
猜你喜欢
  • 1970-01-01
  • 2020-05-20
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 2020-12-16
  • 2020-04-27
相关资源
最近更新 更多