@php function renderField($field) { $type = $field['type'] ?? 'text'; $name = $field['name'] ?? ''; $label = $field['label'] ?? ''; $value = $field['value'] ?? ''; $required = $field['required'] ?? false; $options = $field['options'] ?? []; $upload_text = $field['upload_text'] ?? ''; $suffix = $field['suffix'] ?? ''; $attributes = $field['attributes'] ?? []; $html = ''; switch ($type) { case 'text': case 'number': case 'password': case 'date': case 'time': case 'datetime': $inputType = $type === 'password' ? 'password' : ($type === 'number' ? 'number' : ($type === 'date' ? 'date' : ($type === 'time' ? 'time' : ($type === 'datetime' ? 'datetime-local' : 'text')))); $html .= ""; $html .= ""; if ($suffix) $html .= "{$suffix}"; break; case 'select': $html .= ""; $html .= ""; if ($value) { $html .= "Profile Photo"; } if ($upload_text) { $html .= "
{$upload_text}
"; } break; case 'file': $html .= ""; $html .= ""; break; case 'dropzone': $html .= ""; $html .= "
"; break; case 'hidden': $html .= ""; break; case 'html': $html .= $value; break; case 'include': $html .= view($value, ['field' => $field])->render(); break; case 'group': $html .= "
"; foreach ($field['fields'] as $gfield) { $html .= "
".renderField($gfield)."
"; } $html .= "
"; break; case 'anchor': $icon = $field['icon'] ?? ''; $href = $field['href'] ?? '#'; $attr = ''; if (!empty($field['attributes'])) { foreach ($field['attributes'] as $k => $v) { $attr .= $k.'="'.$v.'" '; } } $html .= ""; if ($icon) { $html .= " "; } // Only show text if set and not empty if (isset($field['text']) && trim($field['text']) !== '') { $html .= $label ?: $field['text']; } $html .= ""; break; default: $html .= ""; } return $html; } @endphp @php $hasDateTime = false; $hasCropper = false; $hasDropzone = false; if(isset($form['groups'])) { foreach($form['groups'] as $group) { foreach($group['fields'] as $field) { if(in_array($field['type'], ['date','time','datetime'])) $hasDateTime = true; if(!empty($field['attributes']['cropper'])) $hasCropper = true; if($field['type'] === 'dropzone') $hasDropzone = true; } } } @endphp
@csrf @if(isset($id) && $id) @method('PUT') @endif @if(isset($form['groups']) && is_array($form['groups'])) @foreach($form['groups'] as $group)
{{ $group['label'] ?? '' }}
@foreach($group['fields'] as $field)
{!! renderField($field) !!}
@endforeach
@endforeach @endif
@if(isset($form['custom_buttons'])) @foreach($form['custom_buttons'] as $button) @if(isset($button['type']) && $button['type'] == 'anchor') {!! $button['text'] !!} @else @endif @endforeach @else @endif
@if($hasDateTime) @include('admin.components.date-time-picker') @endif @if($hasDropzone) @push('page_css') @endpush @push('page_script') @endpush @endif @if($hasCropper) @push('page_css') @endpush @push('page_script') @endpush @endif @push('page_script') @endpush @if(isset($form['include_scripts'])) @push('page_script') {!! $form['include_scripts'] !!} @endpush @endif