顯然我想做的是如下; 注冊vuejs的時候,我想在注冊組件中顯示從Laravel回傳的錯誤。但我不知道該怎么做。
拜托,如果您在回復時考慮到我是 vuejsi 的初學者,我將不勝感激。
控制臺上顯示的錯誤回傳如下。
{
"name": [
"The name field is required."
],
"email": [
"The email field is required."
],
"password": [
"The password field is required."
]
}
注冊.vue
<template>
<div>
<h1>Register</h1>
<div>
<label>name</label>
<input type="text" v-model="user.name">
</div>
<div>
<label>mail</label>
<input type="email" v-model="user.email">
</div>
<div>
<label>password</label>
<input type="password" v-model="user.password">
</div>
<div>
<label>password</label>
<input type="password" v-model="user.password_confirmation">
</div>
<div>
<button @click="register">Register</button>
</div>
</div>
</template>
<script>
import axios from "axios";
export default {
name: "Register",
data() {
return {
user: {
name: null,
email: null,
password: null,
password_confirmation: null
},
isUser: false,
errors: {}
}
},
methods: {
register() {
this.$store.dispatch("register", {...this.user, isUser: this.isUser})
}
}
}
</script>
商店.js
import Vue from 'vue'
import Vuex from 'vuex'
import axios from "axios";
import router from '../router';
Vue.use(Vuex)
export default new Vuex.Store({
state: {
token: "",
},
mutations: {
setToken(state, token) {
state.token = token
},
clearToken(state) {
state.token = ""
},
},
actions: {
initAuth({commit, dispatch}) {
let token = localStorage.getItem('token')
if (token) {
commit('setToken', token)
} else {
router.push('/login')
return false;
}
},
login({commit, dispatch, state}, autData) {
return axios.post(
'/api/login', {
email: autData.email,
password: autData.password
})
.then(response => {
commit('setToken', response.data.token)
localStorage.setItem('token', response.data.token)
router.push('/')
console.log(response)
})
.catch(error => {
console.log(error)
})
},
register({commit, dispatch, state}, autData) {
return axios.post(
'/api/register', {
name: autData.name,
email: autData.email,
password: autData.password,
password_confirmation: autData.password_confirmation
})
.then(response => {
commit('setToken', response.data.token)
router.push('/')
console.log(response)
})
.catch(error => {
console.log(error.response.data.errors);
})
},
logout({commit, dispatch, state}) {
commit('clearToken')
localStorage.removeItem('token')
router.push('/login');
}
},
getters: {
isAuthenticated(state) {
return state.token !== ""
}
},
modules: {},
})
uj5u.com熱心網友回復:
您可以Vuex像使用token.
商店.js
state: {
token: "",
errors: null
},
mutations: {
setErrors(state, errors) {
state.errors = errors
}
...
},
actions: {
...
.catch(error => {
commit('setErrors', error.response.data.errors)
})
...
注冊.vue
<template>
<div>
<h1>Register</h1>
<div v-for="(item, key) in user" :key="key">
<label>{{key}}</label>
<input :type="key.includes('password') ? 'password' : 'text'" v-model="user[key]">
<div v-if="errors && errors[key]">
<p v-for="(error, keyError) in errors[key]" :key="`error-${keyError}`">
{{error}}
</p>
</div>
</div>
<div>
<button @click="register">Register</button>
</div>
</div>
</template>
<script>
import axios from "axios";
export default {
name: "Register",
computed: {
errors() {
return this.$store.state.errors;
}
},
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/403393.html
標籤:
