laravel 6 вызывающий пост маршрут, чтобы вернуться на ту же страницу для сортировки таблицы - PullRequest
2 голосов
/ 28 февраля 2020

Я пытаюсь создать таблицу, которую пользователь может отсортировать

Я создал следующие два маршрута

 route::get('/manager', 'Manager\DeadlineController@index')->middleware(['auth', 'auth.manager'])->name('manager.index');
    route::post('/manager/{name_id}', 'Manager\DeadlineController@sortByName')->middleware(['auth', 'auth.manager'])->name('manager.sortByName');

из моего php кустарного маршрута: список

|        | GET|HEAD  | manager                      | manager.index        | App\Http\Controllers\Manager\DeadlineController@index                  | web,auth,auth.manager |
|        | POST      | manager/{name_id}            | manager.sortByName   | App\Http\Controllers\Manager\DeadlineController@sortByName             | web,auth,auth.manager |

и настройте мой контроллер следующим образом

public function index()
{
    return view('deadline.index')
    ->with([
        'modules' => Module::all(),
        'name_id' => 0
    ]);
}

public function sortByName($name_id){
    if($name_id == 0){
        $sortedModule = Module::orderBy('name', 'DESC')->get();
    }
    else{
        $sortedModule = Module::orderBy('name', 'ASC')->get();
    }

    return view('deadline.index')
    ->with([
        'modules' => $sortedModule,
        'name_id' => 1
    ]);
}

, на мой взгляд, я использую следующую ссылку для сортировки

 <th scope="col"><a href="{{ route('manager.sortByName', $name_id) }}">NAME</a></th>

, но когда я использую эту ссылку, на мой взгляд, я как-то перенаправлен на мой маршрут GET, потому что я получаю следующую ошибку

The GET method is not supported for this route. Supported methods: POST.

Что я пропускаю или делаю неправильно? Любая помощь или советы будут оценены. Пожалуйста, спросите, нужно ли мне предоставить более подробную информацию

Обновление

Я изменил ссылку в моем представлении на тег формы с кнопкой отправки, и теперь она работает

<th scope="col">
   <form action="{{ route('manager.sortByName', $name_id) }}" method="POST">
         @csrf
         <button type="submit">NAAM</button>
    </form>
</th>

1 Ответ

0 голосов
/ 28 февраля 2020

Когда вы нажимаете на тег <a>, он выполняет GET-запрос, поэтому вам нужно изменить маршрут с POST на GET, и возвращение представления в качестве ответа на метод post не является хорошей идеей, лучшее решение - GET route

...