【问题标题】:Is there a way to manipulate response from request made by php artisan make:request?有没有办法操纵 php artisan make:request 发出的请求的响应?
【发布时间】:2019-11-12 14:28:23
【问题描述】:

我有一个 Laravel wit FormRequest extend 的请求,并带有以下规则和消息:

public function rules()
{
    return [
        'login' => 'required',
        'password' => 'required',
    ];
}

public function messages()
{
    return [
        'login:required' => 'Login is required',
        'password:required' => 'Password is required'
    ];
}

现在我收到这样的回复:

{
    "message": "The given data was invalid.",
    "errors": {
        "login": [
            "The login field is required."
        ],
        "password": [
            "The password field is required."
        ]
    }
}

但我想要这样的东西:

{
    "status": false,
    "validator": true,
    "msg": {
        "e": {
            "login": [
                "The login field is required."
            ],
            "password": [
                "The password field is required."
            ]
        },
        "type": "error"
    }
}

这可能吗?

因为现在我使用这段代码来得到这个:

$item = Validator::make($request->all(), [
    'login' => 'required',
    'password' => 'required',
]);

if ($item->fails())
    return response()->json([
        'status' => false,
        'validator' => true,
        'msg' => [
            'e' => $item->messages(),
            'type' => 'error'
        ],
    ]);

但我想通过 larave 提出的请求来制作这个(php artisan make:request)

【问题讨论】:

    标签: php laravel exception python-requests httpresponse


    【解决方案1】:

    是的,你可以做到。将此方法添加到您的表单请求类:

    use Illuminate\Contracts\Validation\Validator;
    use Illuminate\Http\Exceptions\HttpResponseException;
    
    // ...
    
    protected function failedValidation(Validator $validator)
    {
        $data = [
            'status'    => false,
            'validator' => true,
            'msg'       => [
                'e'    => $validator->errors(),
                'type' => 'error',
            ],
        ];
    
        throw new HttpResponseException(response()->json($data, 422));
    }
    

    【讨论】:

    • 我收到此回复:{ "message": "Server Error" }
    • @Marius 我的错。用我更新的答案再试一次。我已经测试过了,它可以工作。
    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多