2016-07-19 11 views
0

私はデータベースに何も投稿していないので、このモデルが必要かどうかわからないので、やや混乱します。私は単純なインデックスページを持っています選択に基づいてコンテンツを配信する

Route::get('/', '[email protected]'); 

ここに特別なものはありません。しかし、私は、パネルの1をクリックすると次のような形式

<a href="#" data-toggle="modal" data-target="#reportOneModal"> 
    <div class="panel panel-primary"> 
     <div class="panel-heading"> 
      <h3 class="panel-title">Report One</h3> 
     </div> 
     <div class="panel-body"><img src="{{ URL::to('/') }}/images/image1.png"></div> 
    </div> 
</a> 

を取る4枚のパネルを持って、このインデックスページに、それはいくつかの選択入力を持つモーダルが表示されます。これは私が表示する必要があるレポートをフィルタにかけることです。各パネルには、選択入力に異なるオプションがあります。

私が本質的に必要とするのは、選択した入力をコントローラに投稿して、どの画像を表示するかを知ることです。モーダルこの

<div class="modal fade" id="reportOneModal" role="dialog" aria-labelledby="reportOneModalLabel"> 
    <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
      <div class="modal-body"> 
       {!! Form::open(array('route' => array('report'))) !!} 
       <div class="modal-body"> 
        <div class="row"> 
         <div class="col-md-12"> 
          <div class="form-group"> 
           {!! Form::label('productType', 'Report Type', array('class' => 'col-sm-5 control-label blue')) !!} 
           <div class="col-sm-7"> 
            <select class="selectpicker" name="reportType" id="reportType"> 
             <option value=""></option> 
             <option value="Value">Value</option> 
             <option value="Value">Salary</option> 
            </select> 
           </div> 
          </div> 
         </div> 
        </div> 
        <div class="row" id="yearRow"> 
         <div class="col-md-12"> 
          <div class="form-group"> 
           {!! Form::label('reportYear', 'Year', array('class' => 'col-sm-5 control-label blue')) !!} 
           <div class="col-sm-7"> 
            <select class="selectpicker" name="reportYear" id="reportYear"> 
             <option value=""></option> 
             <option value="2016">2015</option> 
             <option value="2016">2016</option> 
            </select> 
           </div> 
          </div> 
         </div> 
        </div> 
       </div> 
       <div class="modal-footer"> 
        {!! Form::submit('View Report', ['class' => 'btn btn-primary loadBtn']) !!} 
       </div> 
       {!! Form::close() !!} 
      </div> 
     </div> 
    </div> 
</div> 

のように見えるので、あなたがモーダルためのフォームを報告して掲示されていることがわかります、私は、各パネルごとに異なる関数を呼び出します。このルートは、この

Route::post('report', array('as' => 'report', 'uses' => '[email protected]')); 

のように見え、私が午前問題は、私が表示しようとしていますつのレポートを参照

public function getReport() 
{ 
    $reportType = Input::get('reportType'); 
    $reportYear = Input::get('reportYear'); 

    $filePath = 'report-images/' . $reportType . '/' . $reportYear . '/'; 
    $image = $reportType . '_' . $reportYear; 
    $fullPath = $filePath . $image . '.png'; 

    if(!empty($fullPath)) { 
     return view('report.report', compact('fullPath')); 
    } 
} 

次のようにコントローラ機能があります。画像をきれいに表示できますが、この画像にはさまざまなバリエーションがあります。したがって、このレポートのビューで私は追加しました

<select class="selectpicker" name="bmId" id="bmId"> 
    <option value="variant1">variant1</option> 
    <option value="variant2">variant2</option> 
    <option value="variant3">variant3</option> 
</select> 

これらのバリアントのいずれかが選択されると、何とかルートreport.getReport2を呼び出す必要があります。私は、現時点では私は、URLを呼び出すにしたくない、問題がある

$("#bmId").change(function() { 
    $.ajax({ url: "test.html", context: document.body, success: function(){ 
     $(this).addClass("done"); 
    }}); 
}); 

をしようとしています、私はAjaxでこれを行うことが推測、私はルートを呼び出し、この新しいバリアント値を渡したいです。

どうすればこのようなことをやりますか?

ありがとうございました

答えて

1

あなたのjsコードが自分自身で表示されているものとします。

$.ajax({ 
     type: "POST", 
     url: "{{URL::to('/')}}/report", 
     data: {bmId:$("#bmId").val()}, 
     dataType: 'json', 
    success: function(data){ 
     //do something 
    }, 
    error: function(data){ 
     var errors = data.responseJSON; 
     console.log(errors); 
    } 
}); 

あなたのdata: {bmId:$("#bmId").val()},には、必要な数のパラメータを渡すことができます。

data: {bmId:$("#bmId").val(), reportType:$("#reportType").val() }, 

と私はあなたがあなたのgetレポート機能を更新する必要があると思う:

public function getReport(Request $request)//dont worry about it, it will auto inject it 
{ 
    $reportType = Input::get('reportType'); 
    $reportYear = Input::get('reportYear'); 

    $filePath = 'report-images/' . $reportType . '/' . $reportYear . '/'; 
    $image = $reportType . '_' . $reportYear; 
    $fullPath = $filePath . $image . '.png'; 

    if($request->ajax())//if response is ajx 
     return response()->json(['status'=>'success']); 

    if(!empty($fullPath)) { 
     return view('report.report', compact('fullPath')); 
    } 
} 
+0

私が選択変更イベントで、私はこのエラーに\t POSTのHTTP GETように見えることを置く場合:// localhostを:8000/report /%7B%7BURL :: to( '/')%7D%7D/report \t 404見つからない –

+0

do var myurl = "{{URL :: to( '/')}}"; ajaxリクエストの外側で、次に 'ajaxリクエスト' url:myurl + '/ report'、 ' – theMohammedA

関連する問題