Я пытаюсь добавить Vue компонент формы в мое приложение Laravel, чтобы я мог использовать его в нескольких местах по всему приложению. Но когда я отправляю форму, я получаю сообщение об ошибке 422 о том, что маршрут не найден.
Компонент формы:
<template>
<form @submit.prevent="mail" method="POST">
</form>
</template>
<script>
import FormMixin from '../FormMixin';
export default {
mixins: [ FormMixin ],
data() {
return {
'action': 'submit',
}
}
}
</script>
Форма Mixin
export default {
data() {
return {
fields: {},
errors: {},
success: false,
loaded: true,
action: '',
}
},
methods: {
mail() {
if (this.loaded) {
this.loaded = false;
this.success = false;
this.errors = {};
axios.post(this.action, this.fields).then(response => {
this.fields = {}; //Clear input fields.
this.loaded = true;
this.success = true;
}).catch(error => {
this.loaded = true;
if (error.response.status === 422) {
this.errors = error.response.data.errors || {};
}
});
}
},
},
}
Контроллер
public function mail(NewConctactRequest $contact) {
Mail::to('example@example.com')->send(new NewContact($contact));
return redirect()->route('thank you');
return response()->json(null, 200);
}
Веб-маршруты
Route::get('/home', 'HomeController@index')->name('home');
Route::get('adventures', 'PageController@adventures')->name('adventures');
Route::get('crew', 'PageController@crew')->name('crew');
Route::get('events', 'PageController@events')->name('events');
Route::get('gallery', 'PageController@gallery')->name('gallery');
Route::get('thank_you', 'PageController@thank_you')->name('thank you');
Route::get('contact', 'ContactController@show')->name('contact');
Route::post('submit', 'ContactController@mail')->name('mail contact');
У меня уже установлен Ax ios, а токен CSRF установлен в заголовке документа. Когда я использую форму как стандартную форму (не используя Vue), она отправляется правильно.