@php $connected_entity = new $field['model']; $connected_entity_key_name = $connected_entity->getKeyName(); $field['multiple'] = $field['multiple'] ?? $crud->relationAllowsMultiple($field['relation_type']); $field['attribute'] = $field['attribute'] ?? $connected_entity->identifiableAttribute(); $field['include_all_form_fields'] = $field['include_all_form_fields'] ?? true; $field['allows_null'] = $field['allows_null'] ?? $crud->model::isColumnNullable($field['name']); // Note: isColumnNullable returns true if column is nullable in database, also true if column does not exist. // this field can be used as a pivot select for n-n relationships $field['is_pivot_select'] = $field['is_pivot_select'] ?? false; if (!isset($field['options'])) { $field['options'] = $connected_entity::all()->pluck($field['attribute'],$connected_entity_key_name); } else { $field['options'] = call_user_func($field['options'], $field['model']::query())->pluck($field['attribute'],$connected_entity_key_name); } // make sure the $field['value'] takes the proper value $current_value = old_empty_or_null($field['name'], []) ?? $field['value'] ?? $field['default'] ?? []; if (!empty($current_value) || is_int($current_value)) { switch (gettype($current_value)) { case 'array': $current_value = $connected_entity ->whereIn($connected_entity_key_name, $current_value) ->get() ->pluck($field['attribute'], $connected_entity_key_name); break; case 'object': if (is_subclass_of(get_class($current_value), 'Illuminate\Database\Eloquent\Model') ) { $current_value = [$current_value->{$connected_entity_key_name} => $current_value->{$field['attribute']}]; }else{ $current_value = $current_value ->pluck($field['attribute'], $connected_entity_key_name); } break; case 'NULL': $current_value = []; default: $current_value = $connected_entity ->where($connected_entity_key_name, $current_value) ->get() ->pluck($field['attribute'], $connected_entity_key_name); break; } } $current_value = !is_array($current_value) ? $current_value->toArray() : $current_value; @endphp @include('crud::fields.inc.wrapper_start') {{-- To make sure a value gets submitted even if the "select multiple" is empty, we need a hidden input --}} @if($field['multiple'])@endif {{-- HINT --}} @if (isset($field['hint']))
{!! $field['hint'] !!}
@endif @include('crud::fields.inc.wrapper_end') {{-- ########################################## --}} {{-- Extra CSS and JS for this particular field --}} {{-- If a field type is shown multiple times on a form, the CSS and JS will only be loaded once --}} {{-- FIELD CSS - will be loaded in the after_styles section --}} @push('crud_fields_styles') {{-- include select2 css --}} @loadOnce('packages/select2/dist/css/select2.min.css') @loadOnce('packages/select2-bootstrap-theme/dist/select2-bootstrap.min.css') @endpush {{-- FIELD JS - will be loaded in the after_scripts section --}} @push('crud_fields_scripts') {{-- include select2 js --}} @loadOnce('packages/select2/dist/js/select2.full.min.js') @if (app()->getLocale() !== 'en') @loadOnce('packages/select2/dist/js/i18n/' . str_replace('_', '-', app()->getLocale()) . '.js') @endif @loadOnce('bpFieldInitRelationshipSelectElement') @endLoadOnce @endpush {{-- End of Extra CSS and JS --}} {{-- ########################################## --}}