【问题标题】:Laravel request service return jsonLaravel 请求服务返回 json
【发布时间】:2023-03-07 08:23:01
【问题描述】:

当您使用请求服务验证您的数据时,您如何以 json 格式返回错误,例如

return response->json(array("errors' => true, 'errors' => $errors));

请求服务:

<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;
use Auth;

class MyRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    protected $action;

    public function authorize()
    {
        if(Auth::check()) {
            return true;            
        }        
    }

    public function validate() {
        return parent::validate();
    }

    public function all()
    {

    }

    public function messages()
    {
    }    

    public function rules()
    {               

    }
}

控制器:

public function store(MyRequest $request) {
    $mymodel = new MyModel();
    $mymodel->title = 'test';
    $model->save();
}

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    您不必手动执行此操作,它会自动发送错误响应,可以这样使用:

        @if ($errors->has())
          <div class="alert alert-danger">
            @foreach ($errors->all() as $error)
               {{ $error }}<br>        
            @endforeach
          </div>
        @endif
    

    @if ($errors->has('name')) <p class="help-block">{{ $errors->first('name') }}</p> @endif
    

    跳过请求并执行 Validator::make() 并最终执行:

    return response($validatorObject->messages(), 500);
    

    【讨论】:

    • 那不是服务器端验证响应,我想把响应格式化成json
    • 如果您使用 Laravel 请求进行验证,那么它是服务器端验证。当您提交表单时,验证和响应会自动处理,您将无法指定响应。这导致了 2 种方式,要么你做 Validator::make 并做出你自己的回应 (json),要么你可以做 json_encode($errors)。无论哪种方式你都觉得舒服。
    • 那么你是说如果我使用请求服务我无法格式化响应。
    • 我找到了这个链接:stackoverflow.com/questions/31507849/…。您可以更改 json 中的响应。在这里,您必须覆盖 laravel 功能。我认为这是矫枉过正。
    • 我去了那个链接并使用了函数 wantJson 我现在的问题是你怎么知道响应是一个错误因为它只是返回一个对象
    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2019-06-05
    • 2016-06-03
    • 1970-01-01
    相关资源
    最近更新 更多