Как фильтровать в laravel, используя промежуточное ПО? - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь найти все активные курсы, и вот что я пробовал.

Промежуточное ПО называется Status

public function handle($request, Closure $next)
    {
      $status = $request->status();
      if($status == 'active'){
        return view('admin.courses.index');
      }

        return $next($request);
    }

Мой маршрут вызывает промежуточное ПО

Route::get('admin/courses/?active', 'Admin\CoursesController@index')->middleware('status');

В моем представлении есть кнопка, которая вызывает маршрут

<a href="{{ route('admin.courses.index') }}" style="margin-left:10px;" class="btn btn-success">
            Active <span class="badge badge-light">{{$course_count_active}}</span>
          <span class="sr-only">total courses</span></a>

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

Ответы [ 2 ]

0 голосов
/ 14 июня 2019

Через 2 дня я понял, что мне не хватает токена csfr. Вот что я модифицировал и теперь он работает.

Форма - клинок

<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">

В сценарии Ajax:

$.ajax({
        url: url,
        method: method,
        data: {
        "_token": $('#token').val(),
        'item':$('#item').val(),
        "description": $('#description').val(),
      },

        success: function(response) {

        },

        error: function(xhr) {

      var error = xhr.responseJSON;
      if ($.isEmptyObject(error) == false) {
          $.each(error.errors, function(key, value) {
            $('#' + key)
              .closest('.form-group')
              .addClass('has-error')
              .append('<span class="help-block"><strong>' + value + '</strong></span>')

          });
      }
    }
0 голосов
/ 30 мая 2019

Прежде всего правильный синтаксис для задания параметра: {parameter?}

Теперь второй хочет спросить вас, вы зарегистрировали свое промежуточное программное обеспечение в файле kernel.php (я думаю, что вы сделали, но все еще должны подтвердить)

теперь ваша кнопка не дает параметров для маршрута

{{ route('admin.courses.index') }}

, что означает, что ваше промежуточное ПО будет работать $next($request)

так что, если вам нужно увидеть часть вида (которую вы говорите, фильтр), сделайте это так {{ route('admin.courses.index',['status'=>'active']) }}

теперь последний указывает именованный маршрут, если вы не указали имя маршрута, вы не можете позвонить route(), укажите имя маршрута, как показано ниже

Route::get('admin/courses/{status?}', 'Admin\CoursesController@index')->name('admin.courses.index')->middleware('status');

и дать имя параметра status, как указано выше

Update

Еще одна ошибка, вы не можете получить параметр, как вы сделали.

$status = $request->status();

просто напишите ниже

$status = $request->status;

Обновление

Итак, теперь вы сталкиваетесь с ошибкой setCooking on member function, потому что вы return view('someview') формируете промежуточное ПО, что совсем не является хорошей практикой.

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

и перенаправление на этот маршрут из промежуточного ПО решит вашу проблему.

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