удалить несколько строк на основе введенного в поле поиска - PullRequest
0 голосов
/ 14 марта 2020

Я делаю пример CRUD, используя Laravel и Blade Template. Я следил за пользовательским интерфейсом Wordpress. Проблема состоит в том, чтобы удалить несколько флажков на основе поиска, введенного с использованием одного и того же флажка выбора ALL

<script>
  // SHOW ROW BASED ON SEARCH TYPED
  function myFunction() {
      const filter = document.querySelector('#myInput').value.toUpperCase();
      const trs = document.querySelectorAll('#myTable tr:not(.header)');
      trs.forEach(tr => tr.style.display = [...tr.children].find(td => td.innerHTML.toUpperCase().includes(filter)) ? '' : 'none');
  }

  // SELECT ALL ROW
  function checkAll(parent) {
      var child = document.getElementsByName('pegawai');
      for (var i = 0; i < child.length; i++) {
          if (child[i] != parent)
              child[i].checked = parent.checked;
      }
  }
</script>
<div class="card-body">
    <a href="/test/admin/pegawai/tambah" class="btn btn-primary">Input Pegawai Baru</a>
    <a href="" class="btn btn-danger">Hapus</a>
    <input type="text" id="myInput" onkeyup="myFunction()" placeholder="Search for names.." class="form-control">
    <br/>
    <br/>
    <table class="table table-bordered table-hover table-striped">
        <thead>
            <tr>
                <th><input type="checkbox" onclick="checkAll(this)"></th>
                <th>Foto</th>
                <th>Nama</th>
                <th>Alamat</th>
            </tr>
        </thead>
        <tbody id="myTable">
            @foreach($pegawai as $p)
            <tr>
                <td><input type="checkbox" name="pegawai"></td>
                <td><img width="150px" src="{{ url('/data_file/'.$p->file) }}"></td>
                <td><a href="/test/admin/pegawai/edit/{{ $p->id }}">{{ $p->nama }}</a></td>
                <td>{{ $p->alamat }}</td>
            </tr>
            @endforeach
        </tbody>
    </table>
</div>

1 Ответ

0 голосов
/ 14 марта 2020

измените свое имя входного флажка, чтобы он поддерживал массив, а также установите значение id

<td><input type="checkbox" name="pegawai[]" value="{{ $p->id }}"></td>

. На вашем контроллере вы можете массово удалить как

Pegawai::whereIn('id', $request->pegawai)->delete(); # events wont be fired on model

Или так, как идентификатор является основным клавиша

Pegawai::destroy($request->pegawai);

больше на https://laravel.com/docs/master/eloquent#deleting -модели

Проверьте стиль отображения, чтобы использовать один и тот же, выберите все

  // SELECT ALL ROW
  function checkAll(parent) {
      var child = document.getElementsByName('pegawai');
      for (var i = 0; i < child.length; i++) {
          if ((child[i] != parent) && (child[i].closest('tr').style.display != 'none'))
              child[i].checked = parent.checked;
      }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...