@if ($hidden ?? false)
@endif
@if (isset($field['subfields']) && is_array($field['subfields']) && count($field['subfields'])) @php $result = Null; if(!empty($entry)) { $result = $entry->results()->where('question_id', $question->id)->first(); } @endphp @if($question->is_check == 1) @php $isCheckField['type'] = 'check_radio'; $isCheckField['label'] = ''; $isCheckField['options'] = [1 => "មាន", 0 => "មិនមាន"]; $isCheckField['name'] = 'results['.$repeatable_row_key.'][is_check]'; $isCheckField['row-key'] = "row-$repeatable_row_key"; $isCheckFieldView = $crud->getFirstFieldView('check_radio', false); if(!empty($result) && isset($result->is_check)) { $isCheckField['value'] = $result->is_check; } @endphp @include($isCheckFieldView, ['field' => $isCheckField]) @endif @foreach($field['subfields'] as $subfield) @php $questionId = $subfield['name'] == 'question_id' ? $question->id : NULL; @endphp @if(!empty($question->appendix) && $subfield['type'] == 'upload_multiple') @php $subfieldViewAppendix = $crud->getFirstFieldView($subfield['type'], $subfield['view_namespace'] ?? false); 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.']'; } } } if(!empty($result) && !empty($result->appendix)) { $subfield['value'] = $result->appendix; } $subfield['appendix'] = $question->appendix; @endphp @include($subfieldViewAppendix, ['field' => $subfield]) @endif @if(!empty($questionId)) @php 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'].']'; $subfield['label'] = $question->title; }else{ $subfield['value'] = \Arr::get($row, $subfield['name']); // $subfield['label'] = $question->title; $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.']'; } } } $subfieldView = $crud->getFirstFieldView('hidden', $subfield['view_namespace'] ?? false); $subfield['value'] = $questionId; // dd($subfield); @endphp @include($subfieldView, ['field' => $subfield]) @endif @endforeach @if($question->type->label() == "Text") @php $subfield = [ 'type' => 'text' ]; @endphp
@foreach($question->answers as $key => $answer) @php $subfield['label'] = $answer->title; $subfield['name'] = 'results['.$repeatable_row_key.'][extra]['.$answer->id.']'; $fieldView = $crud->getFirstFieldView("text", $subfield['view_namespace'] ?? false); if(!empty($result) && !empty($result->extra)) { $subfield['value'] = $result->extra[$answer->id]; } @endphp @include("crud::fields.text", ['field' => $subfield]) @endforeach
@endif @if($question->type->label() == "Checkbox") @php $subfield = [ 'type' => 'checklist_answer', 'name' => 'results['.$repeatable_row_key.'][extra]', 'model' => "App\Models\Answer", 'options' => (function ($query) use ($question){ return $query->where('question_id', $question->id)->get(); }), "label" => "", "number_of_columns" => 1, 'pivot' => false, "repeatable_row_key" => $repeatable_row_key ]; $subfieldViewAnswer = $crud->getFirstFieldView($subfield['type'], $subfield['view_namespace'] ?? false); if(!empty($result) && !empty($result->extra)) { $subfield['value'] = $result->extra; $subfield['additional_value'] = $result->additional; } @endphp
@include($subfieldViewAnswer, ['field' => $subfield])
@endif @if($question->type->label() == "Radio") @php $subfield = [ 'type' => 'radio', 'name' => 'results['.$repeatable_row_key.'][answer_id]', 'options' => collect($question->answers->pluck('title', 'id'))->toArray(), "label" => "", ]; $subfieldViewAnswer = $crud->getFirstFieldView($subfield['type'], $subfield['view_namespace'] ?? false); if(!empty($result) && !empty($result->answer_id)) { $subfield['value'] = $result->answer_id; } @endphp
@include($subfieldViewAnswer, ['field' => $subfield])
@endif @if(empty($question->appendix)) @endif @if(!empty($result)) @endif @endif
@if ($hidden ?? false)
@endif