Laravel + Lighthouse(GraphQL)自定义突变验证

时间:2019-09-17 14:30:53

标签: php laravel graphql laravel-lighthouse

之前,我为Laravel使用了纯graphQL,但我没有遇到任何问题,因为整个验证可以在../GraphQL/mutations/中的文件中完成。但是,我现在已经开始使用灯塔,许多事情都以不同的方式进行。例如,我有此突变:

type Mutation {
  createUser(
    name: String @rules(apply: ["required", "min:2"])
    age: Int!
  ): User @create
}

如何在此处添加自己的验证?例如,我希望用户的年龄至少比当前年份早10年。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

按照 docs 中的灯塔验证,您首先将 @validator 添加到架构中。

type Mutation {
  createUser(
    name: String
    age: Int!
  ): User @create @validator
}

然后您使用 php artisan lighthouse:validator CreateUserValidator 创建该验证器。 在文件上,您在 before 进行 Laravel 验证 rule

<?php

namespace App\GraphQL\Validators;

use Nuwave\Lighthouse\Validation\Validator;

class CreateUserValidator extends Validator
{
    /**
     * Return the validation rules.
     *
     * @return array<string, array<mixed>>
     */
    public function rules(): array
    {
        return [
            'name' => [
                'required',
                'min:2'
            ],
            'age' => [
                'required',
                'date',
                'before:-10 years'
            ],
        ];
    }
}