@if (isset($field['subfields']) && is_array($field['subfields']) && count($field['subfields']))
@if ($field['reorder'])
@endif
@foreach ($field['subfields'] as $subfield)
@php
$subfieldView = $crud->getFirstFieldView($subfield['type'], $subfield['view_namespace'] ?? false);
foreach ((array) $subfield['name'] as $subfieldName) {
if ($crud->isRequired($field['name'] . '.' . $subfieldName)) {
$subfield['showAsterisk'] = $field['showAsterisk'] ?? true;
}
}
if (isset($row)) {
// Cast objects to array (could be a translation object, or a developer provided collection).
if (is_object($row)) {
$row = collect($row)->toArray();
}
if (!is_array($subfield['name'])) {
if (!Str::contains($subfield['name'], '.')) {
// this is a fix for 4.1 repeatable names that when the field was multiple, saved the keys with `[]` in the end. Eg: `tags[]` instead of `tags`
if (isset($row[$subfield['name']]) || isset($row[$subfield['name'] . '[]'])) {
$subfield['value'] = $row[$subfield['name']] ?? $row[$subfield['name'] . '[]'];
}
$subfield['name'] = $field['name'] . '[' . $repeatable_row_key . '][' . $subfield['name'] . ']';
} else {
$subfield['value'] = \Arr::get($row, $subfield['name']);
$subfield['name'] = $field['name'] . '[' . $repeatable_row_key . '][' . Str::replace('.', '][', $subfield['name']) . ']';
}
} else {
foreach ($subfield['name'] as $k => $item) {
$subfield['name'][$k] = $field['name'] . '[' . $repeatable_row_key . '][' . $item . ']';
$subfield['value'][$subfield['name'][$k]] = \Arr::get($row, $item);
}
}
} else {
// use an un-matchable field name to avoid field initialization problems
// this would prevent the field from EVER get value in old() and triggering errors.
if (!is_array($subfield['name'])) {
$subfield['name'] = $field['name'] . '[-1][' . $subfield['name'] . ']';
} else {
foreach ($subfield['name'] as $k => $subfieldName) {
$subfield['name'][$k] = $field['name'] . '[-1][' . $subfieldName . ']';
}
}
}
@endphp
@include($subfieldView, ['field' => $subfield])
@endforeach
@endif