Почему условие if не фильтрует результаты? - PullRequest
0 голосов
/ 28 марта 2019

Я хочу создать расширенный поиск, фильтрующий данные о сотрудниках в соответствии с определенными критериями, выбранными пользователями.Это приложение разработано с использованием laravel 5. Я запрашиваю данные, используя функцию ajax и оператор if для фильтрации критериев.Результаты появляются, но он не фильтрует никаких условий в операторе if.

Контроллер условия фильтрации выглядит так:

  public function kakitangan(Request $request)
  {
    $query = DB::table('itemregistrations')
             ->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan');

    if ($request->section != ""){
        $query->where('SectionID', $request->section);
    }

    $newitem = $query->get();

    return response::json($newitem);
  }

Я также пробовал это:

    $query = DB::table('itemregistrations')
             ->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan');

    if(request('section')) {
        $query->where('SectionID', request('section'));
    }
  $newitem = $query->get();

  return response::json($newitem);

Но результат тот же ... все данные в элементах регистрации появляются на странице вывода.Хотя я выбираю другой критерий раздела.

Это код страницы просмотра для выбора:

            <div class="row">
              <div class="col-lg-2"> 
                {{ Form::label('Seksyen', 'Seksyen') }}
              </div>
              <div class="col-lg-2"> 
                {{ Form::select('section', $sections, '', ['class' => 'form-control select2', 'placeholder' => '--pilih--']) }}
              </div>
            </div>
          </div>

Идентификатор выбора из функции контроллера:

     $sections = Section::pluck('sectionname', 'SectionID');
    //sent to html view
    return view('carian.index', compact('sections'));

Кнопка длявызовите ajax-функцию, чтобы получить запрос:

   <button class="btn btn-primary btn-md" id="cari">Cari</button>

Появится код для результатов:

   <script type="text/javascript">
      $( "#cari" ).click(function() {

        var seksyen = $("#section").val();
         $.ajax({
            url: '{{ url('kakitangan') }}',
            data: {'section': seksyen},
            dataType: 'json',
            success: function (data) {
                console.log(data);
                $('#datatable tr').not(':first').not(':last').remove();
                var html = '';
                for(var i = 0; i < data.length; i++){
                    html += '<tr>'+
                                '<td>' + data[i].name + '</td>' +
                            '</tr>';
                    }   
                $('#datatable tr').first().after(html);
            },
            error: function (data) {
            }
        });
      });
   </script>

Должно быть, когда пользователь выбирает раздел, отображаются только сотрудники раздела.Но теперь при выборе какой-либо секции появляются все штабы.

Я просто попытался проверить, правильно ли значение секции передается контроллеру, используя это в контроллере:

    $try=$request->input('section');
    return response::json($try);

В результате получается пустой массив..no значение передано?Это значение раздела не передается правильно?Как исправить эту проблему?

1 Ответ

1 голос
/ 28 марта 2019

Вы передаете раздел как post-param при выполнении запроса GET. Используя jQuery, вы можете отправить это как строку запроса, используя:

 var seksyen = $("#section").val();
     $.ajax({
        url: '{{ url('kakitangan') }}?' + $.param({'section': seksyen}),
        dataType: 'json',
        ...

В вашем контроллере вы также можете явно проверить, содержит ли запрос строку запроса, используя метод has для запроса

if(request()->has('section')) {
    $query->where('SectionID', request('section'));
}

EDIT:

с помощью коллективных помощников формы laravel вы можете указать идентификатор поля, используя следующее (обратите внимание на четвертый аргумент id)

{{ Form::select('section', $sections, '', ['id' => 'section', 'class' => 'form-control select2', 'placeholder' => '--pilih--']) }}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...