2014-04-30 29 views
3

我試圖使用下拉菜單過濾來自查詢的記錄。這個想法是當下拉菜單改變時適用過濾器,所以我想解決方案是使用ajax,但我不太瞭解它以及如何在laravel中使用它。在更改下拉列表中使用ajax過濾laravel中的數據

這裏是我的控制器:

public function setSelectTestView() 
{ 
    $test   = Test::orderBy('updated_at', 'des')->lists('nom', 'id'); 
    $cursos  = Curs::orderBy('nom', 'asc')->lists('nom', 'id'); 
    $assignatures = Assignatura::orderBy('nom', 'asc')->lists('nom', 'id'); 

    return View::make('Test.results.result_select_test') 
     ->with(array('test' => $test, 'cursos' => $cursos, 'asg' => $assignatures)); 
} 

和我的刀鋒:

<fieldset> 
    {{ Form::select('curs', $cursos) }} 
    {{ Form::select('assignatura', $asg) }} 
</fieldset> 

{{ Form::open(array('action' => array('[email protected]'))) }} 
    </br>             
    <fieldset> 
    {{ Form::select('test', $test) }} 
    </fieldset> 
    </br><input type="submit" value="Seleccionar"/> 

{{ Form::close() }} 

我想是過濾變量$test通過cursassignatura,像

$test = Test::where('curs_id', $curs_id)->where('assignatura_id', $asg_id); 

但以異步方式完成此操作並應用一個過濾器r取決於哪個下拉菜單已更改,而且如果第二個過濾器已更改並保持應用第一個過濾器(均應用)

+0

我只是建立這個來給你一個你想要做的事情的一個很好的證明。這是公平的,它和你想要做的一樣,除了聯繫人。它應該有你需要的一切,但我試圖記錄下它...... http://laravel.io/bin/yQzdo#4,10 – user3158900

回答

2

您可以先從選擇框的onchange()事件中獲取過濾器的值,然後通過郵件發送給您的控制器。

$('select[name="curs"]').onchange(){ 
    $cur = $(this).val(); 
    $asg = $('select[name="assignatura"]').val(); 
$.ajax({ 
    url:'/result/search', 
    data:{cur:$cur,asg:$asg;}, 
    cache:false, 
    type:'POST', 
    beforeSend: function (xhr) { 
     var token = $('meta[name="csrf_token"]').attr('content'); 

     if (token) { 
      return xhr.setRequestHeader('X-CSRF-TOKEN', token); 
     } 
    }, 
    success:function(data){ // this is view data returned by controller 
     console.log(data); 
     $('#result_container').html(data); // use it to fill your results 
    } 
})} 

使用您的路線

Route::post('/result/search','[email protected]'); 

然後在控制器使用參數的查詢結果。

public function search(){ 

$cur_id = Input::get('cur'); 
$asg_id = Input::get('asg'); 

    $test = Test::where('curs_id', $cur)->where('assignatura_id', $asg_id); 

return view('Test.results.result_select_test',compact('test'));} 
相關問題