Ich versuche eine einfache Formularvalidierung mit Laravel 5.3 und Vue.js durchzuführen.Vue.js legt keine Daten fest
Laravel Controller:
public function test(\Illuminate\Http\Request $request)
{
$this->validate($request, [
'name' => 'required',
'date' => 'required'
]);
...
}
Vue Daten:
let app = new Vue({
el: '#app',
data: {
submitted: false,
errors: [],
post: {
name: '',
date: '',
},
},
Vue Beitrag:
Vue.http.post('url', post).then((response) => {
// form submission successful, reset post data and set submitted to true
app.post = {
name: '',
date: '',
};
// clear previous form errors
app.$set('errors', '');
app.submitted = true;
}, (response) => {
// form submission failed, pass form errors to errors array
console.log(response.data.name); //"The Name field is required."
app.$set('errors', response.data); // TypeError
});
Ich erhalte
TypeError: can't assign to properties of (new String("errors")): not an object
mit app.$set('errors', response.data);
Wohin gehe ich falsch?
Wie sieht die Methode aus, die 'Vue.http.post' auslöst? 'Vue.http' ist für den globalen Gebrauch gedacht, da gibt es ein 'this. $ Http.post', das sich auf Vue-Instanzen bezieht, also über den richtigen Anwendungsfall nachdenken. Dieses Versprechen sieht für mich etwas komisch aus, was zweite Methode akzeptieren sollte Antwort tun? –
@BelminBedak, 'this. $ Http.post' liefert die gleichen Ergebnisse. – suncoastkid
Okay, was ist mit Versprechen hier? Es könnte zwei Szenarien geben: .then() 'wenn Versprechen erfüllt ist, und' .Catch() 'wenn es ein Problem gibt. Was die zweite Methode mit Parameter Response tun? –