dingo api验证器规则需要修复

时间:2017-12-30 18:28:54

标签: php laravel dingo-api

public function store(Request $request) {

        $response = array('response' => '', 'success'=>false);

        $rules = [
            'email' => 'required|email',
            'password' => 'required'
        ];

        $validator = \Validator::make($request->all(), $rules);

        if($validator->fails()){
            $response['response'] = $validator->messages();
            return $this->response->error($response, 401);
            // or
            return $this->response->error($validator, 401);

        }else{
            User::create($request->all());  
        }

    }

如何使用dingo API在laravel中设置验证器?我尝试了上面的代码,但无法正常工作无法理解哪里是正确的引用来跟踪错误日志

请指导。

3 个答案:

答案 0 :(得分:1)

$rules = [
        'username' => 'required',
        'password' => 'required'
    ];

    $payload = app('request')->only('username', 'password');

    $validator = app('validator')->make($payload, $rules);

    if ($validator->fails()) {
        throw new Dingo\Api\Exception\StoreResourceFailedException('Invalid username provided.', $validator->errors());
    }

您可以尝试

答案 1 :(得分:0)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[1, 2, 3, 5, 6, 7, 8]
[1, 16, 25, 36, 49, 64, 81]

此示例取自documentation of Dingo,并根据您的代码进行自定义。

答案 2 :(得分:0)

我发现使用Dingo API进行验证的最佳方法是使用Form Requests

但是,使用Dingo API时,请使用

use Dingo\Api\Http\FormRequest;

而不是

use App\Http\Requests\Request; 喜欢正常形式的请求。

所以在你的情况下,你有一个表单请求,如

<?php

namespace App\Http\Requests;

use Dingo\Api\Http\FormRequest;

class CreateUser extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'email' => 'required|email',
            'password' => 'required'
        ];
    }
}

因此,这会在您的控制器之外保留验证。你的控制器功能可以只是

public function store(Request $request) {
      User::create($request->all());  
}

如果您对Form Requests不是很熟悉,这是一个很好的机会来看待它。欢呼声。