当尝试使用Vue中的Axios向Laravel API提交POST
请求时,验证运行正常,但在检查验证是否失败($data->fails()
)时,它将返回JSON响应作为错误,状态为422。它不会进入写入自定义返回消息的下一行。
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;
class AuthController extends Controller
{
//for making register
public function register(Request $request){
// Validator
$data = $request->validate([
'name' => 'required | string',
'email' => 'required | email | unique:users',
'password' => 'required | min:6 | max:10',
'cPassword' => 'required | same:password'
]);
// checking validation
if($data->fails()){
return response()->json(['error'=>$data->errors()->all()], 400);
}
}
}
1条答案
按热度按时间c86crjj01#
出现错误是因为您试图调用数组上的方法。
$request->validate()
的响应类型是array
,而不是Validator
对象的示例。因此$data
是array
,因此没有fails()
或任何其他方法。Laravel在验证失败时使用$request->validate()
的默认行为是自动抛出一个重定向回客户端的异常或者,如果验证成功,它将填充并返回一个包含通过验证的数据的数组。移除下列程式码区块: