Есть ли «опции» для фильтрации запроса по полю «контрольный список»? Как на select2_multiple. Но я хочу использовать контрольный список вместо select2_multiple - PullRequest
2 голосов
/ 03 мая 2019

Я использую select2_multiple и могу использовать «опции», как в примере с документацией, но могу ли я использовать «опции» в поле контрольного списка?

Я пытался включить «опции», но ничего не работает

$this->crud->addField([
            'label'     => 'Printers',
            'type'      => 'checklist',
            'name'      => 'printer',
            'entity'    => 'printers',
            'attribute' => 'printer_name',
            'model'     => "App\Models\Printer",
            'pivot'     => true,
            'options'   => (function ($query) {
                return $query->where('id', backpack_auth()->user()->id)->get();
            }),
        ]);

Я бы хотел отфильтровать результат

1 Ответ

2 голосов
/ 05 мая 2019

Поле checklist не позволяет это из коробки, но вы можете создать настраиваемое поле, выбрав соответствующий код из select2_multiple.blade.php и объединив его с подходом в checklist.blade.php

Создайте файл на resources / views / vendor / backpack / crud / fields / checklist_filtered.blade.php со следующим содержанием:

<!-- checklist with optional filtered query -->
<!-- checklist_filtered -->
@php
    if (!isset($field['options'])) {
        $options = $field['model']::all();
    } else {
        $options = call_user_func($field['options'], $field['model']::query());
    }
@endphp

<div @include('crud::inc.field_wrapper_attributes') >
    <label>{!! $field['label'] !!}</label>
    @include('crud::inc.field_translatable_icon')
    <?php $entity_model = $crud->getModel(); ?>

    <div class="row">
        @foreach ($options as $connected_entity_entry)
            <div class="col-sm-4">
                <div class="checkbox">
                  <label>
                    <input type="checkbox"
                      name="{{ $field['name'] }}[]"
                      value="{{ $connected_entity_entry->getKey() }}"

                      @if( ( old( $field["name"] ) && in_array($connected_entity_entry->getKey(), old( $field["name"])) ) || (isset($field['value']) && in_array($connected_entity_entry->getKey(), $field['value']->pluck($connected_entity_entry->getKeyName(), $connected_entity_entry->getKeyName())->toArray())))
                             checked = "checked"
                      @endif > {!! $connected_entity_entry->{$field['attribute']} !!}
                  </label>
                </div>
            </div>
        @endforeach
    </div>

    {{-- HINT --}}
    @if (isset($field['hint']))
        <p class="help-block">{!! $field['hint'] !!}</p>
    @endif
</div>

Затем обновите ваш вызов до addField, чтобы использовать 'type' => 'checklist_filtered',

...