(Laravel) Могу ли я передать раскрывающееся значение непосредственно в метод контроллера? - PullRequest
0 голосов
/ 18 февраля 2019

Все, что я хочу, это передать раскрывающееся значение непосредственно в мой метод контроллера.Есть ли какие-либо возможные способы сделать это или есть какие-либо документы или учебные пособия о том, как это сделать?Кстати, я использую Laravel 5.7.Любые комментарии, которые могут помочь мне решить эту проблему, будут высоко оценены.Заранее спасибо.

Это код моего выпадающего списка.

<form  method="POST" id="year" name="year">
              <select name="year">
                    <option class="dropdown-item" selected name="years" disabled>--Select Year--</option>
                 <?php 
                    $start = "2017";
                    $end = (int)date("Y");                
                       for($i=$start; $i<=$end; $i++){                  
                          echo '<option class="dropdown-item" value='.$i.'>'.$i.'</option>';
                       }
                 ?>                          
             </select>                  
   </form>

Это метод в моем контроллере, в котором я хочу передать раскрывающееся значение.

public function resolution_time_of_calls(){         

        //declarations            
        $arr_val = array();
        $arr_val1 = array();
        $arr_val2 = array();
        $arr_monthname = array();
        $arr_monthInt = array();               

        //SELECTING MONTHS  
        $quer = DB::select("SELECT MONTH(DATE_ADD(T.Created, INTERVAL 8 HOUR)) AS MonthInt
            ,monthname(DATE_ADD(T.Created, INTERVAL 8 HOUR)) AS Month
            ,year(DATE_ADD(T.Created, INTERVAL 8 HOUR)) AS Year               
            FROM rtdb.Tickets T
            LEFT JOIN rtdb.ObjectCustomFieldValues O ON O.ObjectId=T.EffectiveId 
            AND O.CustomField=15 AND O.ObjectType='RT::Ticket' AND O.Disabled=0
            WHERE T.Status!='Deleted' AND T.IsMerged IS NULL AND T.Type='ticket'
            AND year(DATE_ADD(T.Created, INTERVAL 8 HOUR))= 2018
            GROUP BY Month,MonthInt,Year Order by MonthInt asc
            ");   
        $chart = new SampleChart;                            
        $chart->title('Resolution Time of Calls');                 
        foreach($quer as $query){
            array_push($arr_monthname, $query->Month.", ".$query->Year);  
            array_push($arr_monthInt, $query->MonthInt);   
        }                     
        $chart->labels($arr_monthname); 

        ///////////////////// TOTAL, AVERAGE,MAXIMUM Query  ////////////////////
        foreach($arr_monthInt as $month){
            $sql = DB::select("SELECT MONTH(DATE_ADD(T.Created, INTERVAL 8 HOUR)) AS MonthInt

                ,AVG(TIMESTAMPDIFF(HOUR,T.Created,O.Created)) AS AVG   
                ,MAX(TIMESTAMPDIFF(HOUR,T.Created,O.Created)) AS MAX               
                FROM rtdb.Tickets T
                LEFT JOIN rtdb.ObjectCustomFieldValues O ON O.ObjectId=T.EffectiveId 
                AND O.CustomField=15 AND O.ObjectType='RT::Ticket' AND O.Disabled=0
                WHERE T.Status!='Deleted' AND T.IsMerged IS NULL AND T.Type='ticket'
                AND year(DATE_ADD(T.Created, INTERVAL 8 HOUR))= 2018                    
                GROUP BY MonthInt Order by MonthInt asc");
        }
        foreach($sql as $value){

            array_push($arr_val1, $value->AVG );
            array_push($arr_val2, $value->MAX );
        }

        $chart->dataset('Average Hours', 'bar', $arr_val1)->backgroundcolor('#00833E');   
        $chart->dataset('Maximum Hours', 'bar', $arr_val2)->backgroundcolor('#AF1D2D');   
        $chart->height(600);


    return view('resolution_time_of_calls',['chart'=>$chart]);
} 

1 Ответ

0 голосов
/ 18 февраля 2019

Вы можете достичь этого, используя Ajax, поскольку в вашей форме нет кнопки отправки.Вызов ajax будет выполнен, как только вы выберете любую опцию (например, при событии изменения)

$(document).on('change', '#year', function () {

    $.ajax({
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
        url: YOUR_URL,
        type: 'POST',
        data: $("#year").serialize(),
        success: function (data) {
            console.log('Success==>', data);
        },
        error: function (data) {
            console.log('Error==>', data);
        }
    });
});   

В вашем контроллере вы можете проверить, используя $request->all().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...