[], 'content' => [] ]; $viewElementCandidatePath = '/genericElements/SingleViews/Fields/'; foreach($data['MetaTemplates'] as $metaTemplate) { if (!empty($metaTemplate->meta_template_fields)) { $tabData['navs'][] = [ 'html' => $this->element('/genericElements/MetaTemplates/metaTemplateNav', ['metaTemplate' => $metaTemplate]) ]; $fields = []; foreach ($metaTemplate->meta_template_fields as $metaTemplateField) { $labelPrintedOnce = false; if (!empty($metaTemplateField->metaFields)) { foreach ($metaTemplateField->metaFields as $metaField) { $viewElementCandidate = $metaTemplateField->index_type == 'text' ? 'generic' : $metaTemplateField->index_type; // Currently, single-view generic fields are not using index-view fields $fields[] = [ 'key' => !$labelPrintedOnce ? $metaField->field : '', // Not relying on the `type` option as this table is a special case where not all values have a label 'raw' => $this->element(sprintf('%s%sField', $viewElementCandidatePath, $viewElementCandidate), [ 'data' => $metaField, 'field' => [ 'path' => 'value', ] ]), 'rawNoEscaping' => true, 'notice_warning' => $metaTemplateField->warning ?? null, 'notice_info' => $metaTemplateField->info ?? null, 'notice_danger' => $metaTemplateField->danger ?? null ]; $labelPrintedOnce = true; } } } $listTable = $this->Bootstrap->listTable([ 'hover' => false, 'elementsRootPath' => '/genericElements/SingleViews/Fields/' ],[ 'item' => false, 'fields' => $fields, 'caption' => __n( 'This meta-template contains {0} meta-field', 'This meta-template contains {0} meta-fields', count($fields), count($fields) ) ]); if (!empty($metaTemplate['hasNewerVersion']) && !empty($fields)) { $listTable = $this->Bootstrap->alert([ 'html' => sprintf( '