【问题标题】:Laravel + Lighthouse (GraphQL) custom mutation validationLaravel + Lighthouse (GraphQL) 自定义变异验证
【发布时间】:2020-01-18 10:51:56
【问题描述】:
之前我在 Laravel 中使用了纯 graphQL,我没有遇到任何问题,因为整个验证可以在 ../GraphQL/mutations/ 中的文件中完成。然而,我现在已经开始使用灯塔,而且很多事情都做了不同的事情。例如,我有这个突变:
type Mutation {
createUser(
name: String @rules(apply: ["required", "min:2"])
age: Int!
): User @create
}
如何在此处添加自己的验证?例如,我希望用户的年龄至少比当前年份早 10 年。
【问题讨论】:
标签:
php
laravel
graphql
laravel-lighthouse
【解决方案1】:
在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'
],
];
}
}