Не работает redirect в связке laravel + vue.js
Осваиваю Laravel. Сделал простую форму (просмотр/редактирование/удаление) всё работает. Появилось желание сделать валидацию на стороне клиента. Сделал форму через vue-component, данные получаю через axios.get. Самописная валидация на уникальность работает. Данные сохраняются в БД, но не работает редирект на страницу со списком всех записей.
Что есть: 1) Сохранение данных во vue-component
onSubmit: function () {
this.urlUpdate = '/units/'+this.data.id+'/update'
axios.post(this.urlUpdate, {'code': this.code, 'name': this.name })
.then (function (response) {
console.log(response);})
.catch(function (error) {
console.log(error);});
}
- Маршрут
Route::post('/units/{id}/update', 'UnitController@update')->name('unit-update');
- Контроллер
public function update($id, Request $req)
{ $unit = Unit::find ($id);
$unit->code =$req->input('code');
$unit->name =$req->input('name');
$unit->save();
return redirect()->route('units');
}
В обычной форме всё переходит и работает. Через axios.post данные в БД пишутся, но остаюсь на той же странице, а в качестве response получают html-код страницы на которую нужно перейти. Она вся выводится в консоль. Как правильно реализовать переход? Смотреть в сторону vue-router?
Ответы (2 шт):
vue-component
onSubmit: function () {
this.urlUpdate = '/units/'+this.data.id+'/update'
axios.post(this.urlUpdate, {'code': this.code, 'name': this.name })
.then (function (response) {
console.log(response);
if (response.data.href !== undefined) {
location.href = response.data.href
} else {
location.reload(true);
}
})
.catch(function (error) {
console.log(error);});
}
Контроллер
public function update($id, Request $req)
{
$result = [];
$unit = Unit::find ($id);
$unit->code =$req->input('code');
$unit->name =$req->input('name');
$unit->save();
$result['href'] = route('units');
return response()->json($result)
}
use Vue-Router
Vue Component
this.$router.push('your redirect link')