Page stopped working due to an error

Hi there,

The debugger is showing that there is an error in line 7 of this code:

<?php

use woodens\Form;

return function ($page) {
	
	$fields = $page->fb_builder()->toBlocks();
  $form = [];


  
  foreach ($fields as $key => $field) {

    $name = $field->field_name()->value;
    $type = str_replace('fb_', '', $field->type());

    if ($type == 'displaytext') {
      $name = $key;
    }

    if ($type == 'submit') {
      $name = 'submit';
    }

    $form[$name] = [
      'type' => $type,
      'label' => $field->field_label()->value,
      'width' => $field->field_width() != "full" ? $field->field_width()->value : '',
      'rules' => [],
      'message' => [],
      'text' => $field->text()->or($field->field_text())->value,
      'placeholder' => $field->placeholder()->value,
      'mergefield' => $field->mergefield()->value,
      'default' => $field->default()->value,
    ];

    if ($field->field_required()->toBool()) {
      $form[$name]['rules'][] = 'required';
      $form[$name]['message'][] = 'Bitte geben Sie hier etwas ein.';
    }

    if ($field->min()->isNotEmpty()) {
      $form[$name]['rules']['min'] = $field->min()->value;
      $form[$name]['message'][] = 'Bitte geben Sie hier min. ' . $field->min() . ' Zeichen ein.';
    }

    if ($field->max()->isNotEmpty()) {
      $form[$name]['rules']['max'] = $field->max()->value;
      $form[$name]['message'][] = 'Bitte geben Sie hier max. ' . $field->max() . ' Zeichen ein.';
    }

    switch ($type) {
      case 'email':
        $form[$name]['rules'][] = 'email';
        $form[$name]['message'][] = 'Bitte geben Sie hier eine richtig formatierte E-Mail-Adresse ein.';
        break;
      case 'select':
      case 'radios':
      case 'checkboxes':
        $items = [];
        $default = '';
        foreach ($field->options()->toStructure() as $key => $item) {
          $value = $item->item_value()->value;
          $items[$value] = $item->item_label()->value;
          if ($item->item_state()->toBool()) $default = $value;
        }
        
        if ($type == 'checkboxes') {
          $form[$name]['default'] = [$default];
        }
        else {
          $form[$name]['default'] = $default;
        }
        $form[$name]['options'] = $items;
        break;
      case 'submit':
        $form[$name]['content'] = $form[$name]['text'];
        $form[$name]['fullwidth'] = $field->field_width() != "inline";
        break;
    }

    $form[$name] = array_filter($form[$name], function($value) {
      return $value != '';
    });

  }

  // $form['submit'] = [
  //   'type' => 'submit',
  //   'content' => $page->fb_submit_label()->or('Absenden'),
  //   'classes' => ['float-left'],
  // ];

  // if ($page->fb_reset_label()->isNotEmpty()) {
  //   $form['reset'] = [
  //     'type' => 'reset',
  //     'content' => $page->fb_reset_label(),
  //     'color' => 'transparent',
  //     'classes' => [''],
  //   ];
  // }

  $form = new Form($form, [
    'page' => $page,
    'gap' => 2,
    'hasAjaxSubmission' => $page->fb_is_ajax()->toBool(),
    'hasAjaxValidation' => true,
    'successMessage' => $page->fb_success_msg()->or('Das Formular wurde erfolgreich gesendet.')->value,
    'errorMessage' => $page->fb_error_msg()->or('Es ist leider folgender Fehler aufgetreten:')->value,
  ]);

  // $form = new Form(option('site.form.fields'), option('site.form.formoptions'));
  return compact('form');
};

Grateful for your guidance.

Please provide all information necessary to help debug this:

  1. What is the error shown
  2. What does the field in the content file actually contain?
  3. Which Kirby version are you using?
  4. Here we can still count to line 7, but in other cases, a reference to what line 7 contains is helpful
1 Like

Kirby 3 version 3.7.4
PHP 8.1.22

Error thrown with message “Call to a member function fb_builder() on null”

Stacktrace:
#23 Error in /www/htdocs/w01c71dd/mypage.com/site/designsystem/pagetypes/form/controllers/form.init.php:7
#22 Kirby\Cms\App:{closure} in [internal]:0
#21 Closure:call in /www/htdocs/w01c71dd/mypage.com/vendor/kirby/src/Toolkit/Controller.php:50
#20 Kirby\Toolkit\Controller:call in /www/htdocs/w01c71dd/mypage.com/vendor/kirby/src/Cms/App.php:460
#19 Kirby\Cms\App:controller in /www/htdocs/w01c71dd/mypage.com/site/designsystem/pagetypes/form/index.php:35
#18 form in /www/htdocs/w01c71dd/mypage.com/storage/cache/twig/ef/ef2e0ef8321def6ef97542f4e347f6a9.php:242
#17 __TwigTemplate_002fce98c24fafaeeba65b265e276ba0:block_main in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/Template.php:171
#16 Twig\Template:displayBlock in /www/htdocs/w01c71dd/mypage.com/storage/cache/twig/39/39f82fcdf91210912563d3a4f05517dc.php:274
#15 __TwigTemplate_795f8528f4dd898dca677c447e76cdbb:block_body in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/Template.php:171
#14 Twig\Template:displayBlock in /www/htdocs/w01c71dd/mypage.com/storage/cache/twig/39/39f82fcdf91210912563d3a4f05517dc.php:202
#13 __TwigTemplate_795f8528f4dd898dca677c447e76cdbb:doDisplay in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/Template.php:394
#12 Twig\Template:displayWithErrorHandling in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/Template.php:367
#11 Twig\Template:display in /www/htdocs/w01c71dd/mypage.com/storage/cache/twig/ef/ef2e0ef8321def6ef97542f4e347f6a9.php:45
#10 __TwigTemplate_002fce98c24fafaeeba65b265e276ba0:doDisplay in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/Template.php:394
#9 Twig\Template:displayWithErrorHandling in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/Template.php:367
#8 Twig\Template:display in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/Template.php:379
#7 Twig\Template:render in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/TemplateWrapper.php:40
#6 Twig\TemplateWrapper:render in /www/htdocs/w01c71dd/mypage.com/vendor/twig/twig/src/Environment.php:277
#5 Twig\Environment:render in /www/htdocs/w01c71dd/mypage.com/site/plugins/kirby-twig/src/classes/Environment.php:261
#4 woodens\Twig\Environment:renderPath in /www/htdocs/w01c71dd/mypage.com/site/plugins/kirby-twig/src/classes/Template.php:114
#3 woodens\Twig\Template:render in /www/htdocs/w01c71dd/mypage.com/vendor/kirby/src/Cms/Page.php:1070
#2 Kirby\Cms\Page:render in /www/htdocs/w01c71dd/mypage.com/vendor/kirby/src/Cms/App.php:805
#1 Kirby\Cms\App:io in /www/htdocs/w01c71dd/mypage.com/vendor/kirby/src/Cms/App.php:1256
#0 Kirby\Cms\App:render in /www/htdocs/w01c71dd/mypage.com/public/index.php:18