Open pxpm opened 3 years ago
Here you go
<!-- select_multiple_grouped -->
@php
$field['allows_null'] = $field['allows_null'] ?? true;
$field['value'] = old_empty_or_null($field['name'], collect()) ?? $field['value'] ?? $field['default'] ?? collect();
if (is_a($field['value'], \Illuminate\Support\Collection::class)) {
$field['value'] = $field['value']->pluck(app($field['model'])->getKeyName())->toArray();
}
$related_model = $field['model'];
$group_by_model = (new $related_model)->{$field['group_by']}()->getRelated();
$categories = $group_by_model::with($field['group_by_relationship_back'])->get();
if (isset($field['model'])) {
$categorylessEntries = $related_model::doesnthave($field['group_by'])->get();
}
@endphp
@include('crud::fields.inc.wrapper_start')
<label>{!! $field['label'] !!}</label>
@include('crud::fields.inc.translatable_icon')
{{-- To make sure a value gets submitted even if the "select multiple" is empty, we need a hidden input --}}
<input type="hidden" name="{{ $field['name'] }}" value="" @if(in_array('disabled', $field['attributes'] ?? [])) disabled @endif />
<select
name="{{ $field['name'] }}[]"
@include('crud::fields.inc.attributes', ['default_class' => 'form-control'])
bp-field-main-input
multiple>
@if ($field['allows_null'])
<option value="">-</option>
@endif
@if (isset($field['model']) && isset($field['group_by']))
@foreach ($categories as $category)
<optgroup label="{{ $category->{$field['group_by_attribute']} }}">
@foreach ($category->{$field['group_by_relationship_back']} as $option)
@if(in_array($option->getKey(), $field['value']))
<option value="{{ $option->getKey() }}" selected>{{ $option->{$field['attribute']} }}</option>
@else
<option value="{{ $option->getKey() }}">{{ $option->{$field['attribute']} }}</option>
@endif
@endforeach
</optgroup>
@endforeach
@if ($categorylessEntries->count())
<optgroup label="-">
@foreach ($categorylessEntries as $option)
@if($current_value == $option->getKey())
<option value="{{ $option->getKey() }}" selected>{{ $option->{$field['attribute']} }}</option>
@else
<option value="{{ $option->getKey() }}">{{ $option->{$field['attribute']} }}</option>
@endif
@endforeach
</optgroup>
@endif
@endif
</select>
{{-- HINT --}}
@if (isset($field['hint']))
<p class="help-block">{!! $field['hint'] !!}</p>
@endif
@include('crud::fields.inc.wrapper_end')
Agreed - sounds like something we should have 😀 Nice feature request - short and concise 😂