Как заполнить другое поле в поле зрения laravel blade, используя select2 и laravelcollective - PullRequest
1 голос
/ 02 апреля 2019

Я хочу получить данные с помощью Laravel Collective Select с Select2 с контроллера, используя этот код:

public function create() {
   $customers=Customer::all();
   $customerAlt= Customer::get()->pluck('customer_name', 'id')->prepend('Please Select', '');
   return view('req.create', compact 'customer', 'customerAlt')
}

Теперь на моем блейд-представлении я хочу использовать коллектив Laravel примерно так, если использовать нормальную форму

<select id="NamaPelanggan" name="nama_pelanggan" class="form-control"> 
 <option>Pilih Satu</option>
    @foreach($customers as $cus)
     <option data-contact="{{ $cus->contact_person }}" data-phone="{{ $cus->phone_number }}" value="{{$cus->id}}">{{$cus->name}}</option>
    @endforeach
</select>

И JS ниже, чтобы заполнить другое текстовое поле PIC и PIC_Phone

     $('#NamaPelanggan').change(function() {
          let contact = $(this).find(':selected').data('contact_person');
          let phone = $(this).find(':selected').data('phone_number');
          $('#PIC').val(contact);
          $('#PIC_Phone').val(phone);
      })

Вопрос в том, как я использую laravelcollective с select2 для замены обычного выбора выше и который $customer, который я должен использовать

1 Ответ

0 голосов
/ 02 апреля 2019

Замените ваш элемент select на laravelcollective эквивалентный, и передайте select2 css class как атрибут, как это:

{!! Form::select('customer', $customers, null, ['class' => 'select2']) !!}

Заказчиком должен быть двумерный массив с ключом => значением, где ключом будет значение опции html, а значением будет метка опции html.

$customers = [
    1 => 'Customer A',
    2 => 'Customer B',
]

--- EDITED ---

Чтобы добавить дополнительные атрибуты в поля параметров, такие как data-contact и data-phone, вы можете передать его как массив в качестве пятого параметра.

Обратите на это внимание: пятый параметр - это массив с атрибутами для элементов option; четвертый параметр - это массив с атрибутами для выбора элемента.

Элемент select LaravelCollective позволяет вам передавать этот пятый параметр в виде массива, проиндексированного вашими значениями выбора, и в каждом индексе у вас должен быть другой массив с вашими дополнительными атрибутами. Таким образом, вам понадобится 02 массива для достижения того, что вам нужно.

  1. первый массив $customers для передачи в качестве значения и метки;
  2. второй массив $extraParameters для передачи, где каждый индекс является значением предыдущего массива.

Предположим, это ваш первый массив:

$customers = [
    1 => 'Customer A',
    2 => 'Customer B',
]

Это должен быть ваш второй

$extraParameters = [
    1 => ['data-contact' => 'Customer A Contact', 'data-phone' => 'Customer A Phone'],
    2 => ['data-contact' => 'Customer B Contact', 'data-phone' => 'Customer B Phone']
]
{!! Form::select('customer', $customers, null, ['class' => 'select2'], $extraParameters) !!}
...