Laravel список по месяцам выберите вариант - PullRequest
0 голосов
/ 28 августа 2018

У меня проблема с этим. ИТ-специалист говорит: «Слишком мало аргументов для функции App \ Http \ Controllers \ ViewsController :: OBviews (), 0 пройдено и ровно 1 ожидается»

мой контроллер:

 public function OBviews($date)
    {
        $masterIds = DB::select('SELECT * FROM o_b_masters OBM INNER JOIN users u on OBM.emp_id = u.id INNER JOIN o_b_requests OBR 
        on OBR.details_id = OBM.obmaster_id WHERE u.id =? AND MONTH(OBM.date_filed) = ?', [Auth::id(), $date]);

         return response()->json($masterIds); 
    }

мой маршрут:

Route::GET('/obView/{date}', 'ViewsController@OBviews')->name('OBRequest');

мои JS:

 $('select').on('change', function (e) {
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
  alert(valueSelected);
    $.ajax({
            url: 'obView',
            type: 'GET',
            headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
            data: 'date='+valueSelected,
            success: function (data) {
                if (data['success']) {
                    alert(data['success']);
                } else if (data['error']) {
                    alert(data['error']);
                } else {
                    alert('Whoops Something went wrong!!');
                }
            },
            error: function (data) {
                alert(data.responseText);
            }
        });
  });

my details.blade.php:

  <select name="month" class="form-control">
    <option value="01">January</option>
    <option value="02">February</option>
    <option value="03">March</option>
    <option value="04">April</option>
    <option value="05">May</option>
    <option value="06">June</option>
    <option value="07">July</option>
    <option value="08">August</option>
    <option value="09">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
  </select>

Кажется, что когда они меняются. ничего не проходит к контроллеру.

1 Ответ

0 голосов
/ 28 августа 2018

Ваш URL ожидает сегмент даты, но в вашем вызове ajax вы не указали сегмент даты.

Настройте свой код на это

 $('select').on('change', function (e) {
var optionSelected = $("option:selected", this);
var valueSelected = this.value;
  alert(valueSelected);
    $.ajax({
            url: 'obView/' + valueSelected,
            type: 'GET',
            headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
            success: function (data) {
                if (data['success']) {
                    alert(data['success']);
                } else if (data['error']) {
                    alert(data['error']);
                } else {
                    alert('Whoops Something went wrong!!');
                }
            },
            error: function (data) {
                alert(data.responseText);
            }
        });
  });
...