我的API验证消息在Laravel 7.x中不起作用

问题描述 投票:0回答:1

我已创建用于处理验证错误的消息,但无法正常工作。我已经使用验证器方法来处理错误。以下是我的代码:

<?php

namespace App\Http\Controllers;

use App\CountryModel;
use Illuminate\Http\Request;
use App\Http\Controllers;
use Validator;

class CountryController extends Controller
{
public function country(){
    return response()->json(CountryModel::get(), 200);}

public function countryByID($id){
    $country = CountryModel::find($id);
    if (is_null($country)) {
        return response()->json(["message" => "Record not found!"], 404);
    }
    return response()->json($country, 200);}

public function countrySave(Request $request){
    $rules = [
        'name'=>'required|min:3',
        'iso'=>'required|min:2|max:2',
        'dname'=>'required|min:3',
    ];
    $validator = Validator::make($request->all(),$rules);
    if ($validator->fails()) {
        return response()->json($validator->errors(), 400);
    }

    $country = CountryModel::create($request->all());
    return response()->json($country, 201);
}

public function countryUpdate(Request $request, $id){
    $country= CountryModel::find($id);
    if (is_null($country)) {
        return response()->json(["message" => "Record not found!"], 404);
    }
    $country->update($request->all());
    return response()->json($country, 200);
}

public function countryDelete(Request $request, $id){
    $country= CountryModel::find($id);
    if (is_null($country)) {
        return response()->json(["message" => "Record not found!"], 404);
    }
    $country->delete();
    return response()->json(null, 204);
}
}  

我应使用哪种方法来处理验证错误,以及如何解决此问题?

php laravel laravel-7 laravel-validation validationerror
1个回答
0
投票

您不应使用

$country = CountryModel::create($request->all());

$country->update($request->all());

在插入或更新模型时,因为它在请求中包含_token。

用下面的代码替换上面的两行

$country = CountryModel::create($request->only('name','iso','dname'));
                              or
$country = CountryModel::create($request->except('_token'));


$country->update($request->only('name','iso','dname'));
                              or
$country->update($request->except('_token'));
© www.soinside.com 2019 - 2024. All rights reserved.