'; $all_settings = $this->args['settings']; $this->args['settings'] = RepeaterField::remove_default_fields($all_settings); $repeater_id = $this->args['settings'][$this->args['id']] ?? []; $last_field = array_key_last($repeater_id); $last_field = !empty($last_field) ? $repeater_id[$last_field] : []; if (!empty($last_field) && is_array($last_field) && count($last_field) > 0) { foreach ($last_field as $index => $value) { $output .= $this->render_repeater_fields($index); } } else { $output .= $this->render_repeater_fields(); } $output .= ''; return $output; } private function render_fields($fields, $settings, $index = '', $lang = null): string { $output = ''; foreach ($fields as $field) { $class = 'App\PageBuilder\Fields\\' . $field['type']; $field_name = $field['name'] . '_' . $lang; $value = ''; if (isset($settings[$this->args['id']][$field_name]) && is_array($settings[$this->args['id']][$field_name])){ $value = $settings[$this->args['id']][$field_name][$index]; }elseif (isset($settings[$this->args['id']][$field_name])){ $value = $settings[$this->args['id']][$field_name]; } $instance = new $class(array_merge($field,[ 'name' => $this->args['id'].'['.$field_name . '][]', 'value' => $value ])); $output .= $instance->render(); } return $output; } public function render_repeater_fields( $index = null): string { $output = '