Redirect из контроллера в Laravel 5

123
28 мая 2019, 06:30

Задача из скрипта послать AJAX запрос на удаление записи в БД и вернуться на главную страницу.

Роуты:

Route::get('/', 'MasterController@index')->name('main');
Route::delete('/organisation/{id}', 'OrganisationController@destroy')

JavaScript:

$.ajax({ headers: {
         'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
         url: model+"/"+id,
         type: 'delete',
      });

Контроллер:

public function destroy($id)
{
    $organisation = Organisation::find($id);
    $organisation->delete();
    return redirect('/');
}

Запись удаляется, но при редиректе из контроллера появляется ошибка

"exception": "Symfony\\Component\\HttpKernel\\Exception\\MethodNotAllowedHttpException",

так как в типа запроса остается DELETE и Laravel соответственно не может найти такого роута.

Request URL: http://app/
Request Method: DELETE
Status Code: 405 Method Not Allowed

Есть ли возможность перенаправиться на главную страницу из контроллера?

Answer 1

В контроллере вернуть роут:

return route('main');

В скрипте, после выполнения сделать переадресацию:

$.ajax({ headers: {
     'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
     url: model+"/"+id,
     type: 'delete',
     success: function(route){
         location.replace(route);
     }
});
READ ALSO
Взаимосвязь полей date, обработчик события date

Взаимосвязь полей date, обработчик события date

Есть два html поля date, дата отправки и дата прибытияВремя, затраченное на путь, лежит в бд

139
Input HTML с автоподтягиванием результатов

Input HTML с автоподтягиванием результатов

ЗадачаКлиент на фронте вводит адрес по русски

155
Перевести sql запросы с PostgreSql в MySql

Перевести sql запросы с PostgreSql в MySql

Доброго времени суток

139
MySql партицирование

MySql партицирование

Имеется таблица на 22+ ляма строк из которой необходимо строить отчеты, данные хранятся за пол годаС оптимизацией выборки больших данных почти...

151