Динамическая форма с динамическим полем выбора - Laravel - PullRequest
0 голосов
/ 17 мая 2018

Мне удалось создать динамическую форму с полем выбора (когда вы нажимаете кнопку AddItem на форме, рядом с некоторыми полями будет добавлена ​​строка, а также среди них будет раскрывающийся список).Опции дропбокса жестко запрограммированы.Я пытаюсь получить параметры из базы данных.Как мне этого добиться?

<script>
$(document).ready(function() {

var i = 0;
      $('#add_jobitem').click(function(){
        i++;
        $('#jobitem tr:last').after('<tr>'+
          '<td>'+
              '<select name="jobitem_name[] id=jobitem_name['+i+']">'+
                '<option value="Item1">Item1</option>'+
                '<option value="Item2">Item2</option>'+
                '<option value="Other">Other</option>'+
              '</select>'+
          '</td>'+
          '<td><input name="jobitem_description[]" id="jobitem_description['+i+']" class="jobitem_description" placeholder="Description"></td>'+
          '<td><input name="jobitem_qty[]" id="jobitem_qty['+i+']" class="jobitem_qty" placeholder="Qty" oninput="calculate_jobitem_total()" onchange="calculate_jobitem_total()"></td>'+
          '<td><input name="jobitem_each_price[]" id="jobitem_each_price['+i+']" class="jobitem_each_price" placeholder="Each Price" oninput="calculate_jobitem_total()" onchange="calculate_jobitem_total()"></td>'+
          '<td><input name="jobitem_total[]" id="jobitem_total['+i+']" class="jobitem_total" placeholder="Total"></td>'+
          '<td>'+
          '<select name="jobitem_vendor[] id=jobitem_vendor['+i+']">'+
            '<option value="Vendo1">Vendor1</option>'+
            '<option value="Vendo2">Vendor2</option>'+
          '</select>'+
          '</td>'+
          '<td><input name="jobitem_po_number[]" id="jobitem_po_number['+i+']" class="jobitem_po_number" placeholder="PO Number"></td>'+
        '</tr>');
       });
  });
</script>

Что мне нужно, это заполнить jobitem_vendor [] через базу данных

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Если вы используете laravelcollective / html, вы можете поместить это непосредственно в ваш JS-скрипт

{!! Form::select('jobitem_name[]', App\JobItem::pluck('name', 'id') ) !!}

В вашем javascript:

<script>
$(document).ready(function() {

var i = 0;
      $('#add_jobitem').click(function(){
        i++;
        $('#jobitem tr:last').after('<tr>'+
          '<td>'+
              '{!! Form::select('jobitem_name[]', App\JobItem::pluck('name', 'id') ) !!}'+
          '</td>'+
          '<td><input name="jobitem_description[]" id="jobitem_description['+i+']" class="jobitem_description" placeholder="Description"></td>'+
          '<td><input name="jobitem_qty[]" id="jobitem_qty['+i+']" class="jobitem_qty" placeholder="Qty" oninput="calculate_jobitem_total()" onchange="calculate_jobitem_total()"></td>'+
          '<td><input name="jobitem_each_price[]" id="jobitem_each_price['+i+']" class="jobitem_each_price" placeholder="Each Price" oninput="calculate_jobitem_total()" onchange="calculate_jobitem_total()"></td>'+
          '<td><input name="jobitem_total[]" id="jobitem_total['+i+']" class="jobitem_total" placeholder="Total"></td>'+
          '<td>'+
          '<select name="jobitem_vendor[] id=jobitem_vendor['+i+']">'+
            '<option value="Vendo1">Vendor1</option>'+
            '<option value="Vendo2">Vendor2</option>'+
          '</select>'+
          '</td>'+
          '<td><input name="jobitem_po_number[]" id="jobitem_po_number['+i+']" class="jobitem_po_number" placeholder="PO Number"></td>'+
        '</tr>');
       });
  });
</script>
0 голосов
/ 18 мая 2018

Чтобы получить параметры из базы данных, передайте их из вашего контроллера в представление:

$options = Item::all()->sortby('name', SORT_NATURAL | SORT_FLAG_CASE)->pluck('name', 'id');

Передайте эту переменную в ваше представление:

return view('jobs.index', ['options' => $options]);

В вашем javascript:

var options = {!! json_encode($options) !!};

Затем можно использовать параметры из базы данных при создании поля выбора.

...