Вы можете использовать Vue.js и axios для проверки и отображения ошибок. Иметь маршрут / validate-data в контроллере для проверки данных.
файл app.js:
import Vue from 'vue'
window.Vue = require('vue');
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
class Errors {
constructor() {
this.errors = {};
}
get(field) {
if (this.errors[field]) {
return this.errors[field][0];
}
}
record(errors) {
this.errors = errors;
}
clear(field) {
delete this.errors[field];
}
has(field) {
return this.errors.hasOwnProperty(field);
}
any() {
return Object.keys(this.errors).length > 0;
}
}
new Vue({
el: '#app',
data:{
errors: new Errors(),
model: {
driver_name: '',
address_line1: '',
address_line2: ''
},
},
methods: {
onComplete: function(){
axios.post('/validate-data', this.$data.model)
// .then(this.onSuccess)
.catch(error => this.errors.record(error.response.data.errors));
},
}
});
Создать маршрут / validate-data с помощью метода в контроллере, выполнить стандартную проверку
$this->validate(request(), [
'driver_name' => 'required',
'address_line_1' => 'required',
'address_line_2' => 'required',
'address_line_3' => 'required',
'postcode' => 'required'
]
Затем создайте свои входные данные в файле представления, используя v-модель, которая соответствует полям модели данных vue.js. Под ним добавьте диапазон с классом ошибок (например, базовым стилем красной ошибки), который отображается только при наличии ошибок. Например:
<input type="text" name="driver_name" v-model="model.driver_name" class="input">
<span class="error-text" v-if="errors.has('driver_name')" v-text="errors.get('driver_name')"></span>
Не забудьте включить файл app.js в нижний колонтитул вашего файла представления. Не забудьте включить тег и запустить npm run watch, чтобы скомпилировать код vue. Это позволит вам проверить все ошибки под их полями ввода.
Забыл добавить, есть кнопка с @ onclick = "onComplete" для запуска метода validate.