Tự động load dữ liệu ra bảng khi filter mà ko cần button

laravel
mysql

(Huy Hoàngg) #1

Chào các bác. E có 3 bảng trong DB:

Type: id, name
Level: id, name
Question: id, content, type_id, level_id

Em đã thực hiện được chức năng filter sau khi bấm nút Lọc. Giờ em muốn khi filter thì kết quả tự động đổ ra table mà ko cần nút “Lọc” thì phải làm thế nào ạ :smiley:
Đây là code có button Lọc của e:

FilterController:

public function filter(Request $request){
        $types = Type::all();
        $levels = Level::all();
        $model = Question::where('id', '>', 0);

        if (isset($request->type))
            $model = $model->where('type_id', $request->type);
        if (isset($request->level))
            $model = $model->where('level_id', $request->level);

        $data = $model->paginate(999)->appends(request()->query());

        return view('filter', compact( 'data', 'request', 'types','levels'));
    }

filter.blade.php

<form method="get">
    <select name="type">
        <option value="">All Types</option>
        @foreach ($types as $item)
            <option value="{{ $item->id }}" @if ($request->type == $item->id) selected @endif>{{ $item->name }}</option>
        @endforeach
    </select>
    <select name="level">
        <option value="">All Levels</option>
        @foreach ($levels as $item)
            <option value="{{ $item->id }}" @if ($request->level == $item->id) selected @endif>{{ $item->name }}</option>
        @endforeach
    </select>
    <button type="submit" class="btn btn-primary">Lọc</button>
</form>
<table border="1">
    <tr>
        <th>ID</th>
        <th>Content</th>
    </tr>
    @foreach ($data as $q)
        <tr>
            <td>{{ $q->id }}</td>
            <td>{{ $q->content }}</td>
        </tr>
    @endforeach
</table>

(Dasfa Adsaf) #2

Lúc nó load cho nó chạy luôn cái filter, khỏi cần button rồi mới cho chạy


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?