Laravel 使用 vue js 验证
Laravel Validation with vue js
我想 post ajax 使用 vue-resource this.$http.post
请求。如果我通过了所有验证规则,它工作得很好,但如果它失败了,我想得到一些验证。到目前为止,如果我不填写一些输入字段,我会不断收到 500 错误。我很难调试错误,因为它没有出现在网络选项卡上。
这是我到目前为止所做的
//my modal component
<script>
export default {
props: ['show'],
data() {
return {
input: {
id: '',
name: '',
address: '',
email: ''
},
errorInputs: {}
}
},
methods: {
createStudent() {
this.$http.post('/students', this.$data.input)
.then((response) => {
alert('added new row!)
}, (response) => {
console.log(response.data);
});
}
}
}
</script>
// my controller
public function store(Request $request) {
$validator = $this->validate($request,[
'id' => 'required',
'name' => 'required|unique:students',
'email' => 'required|unique:students|email',
'address' => 'required',
]);
if($validator->passes()){
Student::create($request->all());
return response()->json([], 201);
}
$errors = json_decode($validator->errors());
return response()->json([
'success' => false,
'message' => $errors
],422);
}
如有任何帮助和参考,我们将不胜感激。我正在使用 laravel 5.3 和 vue js 2
$this->validate()
returns 422
错误响应以及验证错误,因此您应该在 then()
第二次回调中得到这些错误(就像您现在所做的那样)。你的 vue 组件体应该是这样的:
{
data() {
// ...
},
createStudent() {
this.$http
.post('/students', this.input)
.then(this.handleSuccess, this.handleError)
},
handleSuccess(res) {
alert('student created')
},
handleError(res) {
if (res.status === 422) {
this.errorInputs = res.body
} else {
alert('Unkown error!')
}
}
}
记得将 v-model="input.fieldName"
属性添加到您的输入中。
请记住将您的会话令牌与您的 post 一起包含在内,除非您当然要为该路由禁用 csrf 令牌。
因为 Laravel 5.1 你可以在你的 verifytoken 中间件中禁用它
<?php namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as ...
class VerifyCsrfToken extends ... {
protected $except = [
'payment/*',
];
}
我想 post ajax 使用 vue-resource this.$http.post
请求。如果我通过了所有验证规则,它工作得很好,但如果它失败了,我想得到一些验证。到目前为止,如果我不填写一些输入字段,我会不断收到 500 错误。我很难调试错误,因为它没有出现在网络选项卡上。
这是我到目前为止所做的
//my modal component
<script>
export default {
props: ['show'],
data() {
return {
input: {
id: '',
name: '',
address: '',
email: ''
},
errorInputs: {}
}
},
methods: {
createStudent() {
this.$http.post('/students', this.$data.input)
.then((response) => {
alert('added new row!)
}, (response) => {
console.log(response.data);
});
}
}
}
</script>
// my controller
public function store(Request $request) {
$validator = $this->validate($request,[
'id' => 'required',
'name' => 'required|unique:students',
'email' => 'required|unique:students|email',
'address' => 'required',
]);
if($validator->passes()){
Student::create($request->all());
return response()->json([], 201);
}
$errors = json_decode($validator->errors());
return response()->json([
'success' => false,
'message' => $errors
],422);
}
如有任何帮助和参考,我们将不胜感激。我正在使用 laravel 5.3 和 vue js 2
$this->validate()
returns 422
错误响应以及验证错误,因此您应该在 then()
第二次回调中得到这些错误(就像您现在所做的那样)。你的 vue 组件体应该是这样的:
{
data() {
// ...
},
createStudent() {
this.$http
.post('/students', this.input)
.then(this.handleSuccess, this.handleError)
},
handleSuccess(res) {
alert('student created')
},
handleError(res) {
if (res.status === 422) {
this.errorInputs = res.body
} else {
alert('Unkown error!')
}
}
}
记得将 v-model="input.fieldName"
属性添加到您的输入中。
请记住将您的会话令牌与您的 post 一起包含在内,除非您当然要为该路由禁用 csrf 令牌。
因为 Laravel 5.1 你可以在你的 verifytoken 中间件中禁用它
<?php namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as ...
class VerifyCsrfToken extends ... {
protected $except = [
'payment/*',
];
}