之前,我为Laravel使用了纯graphQL,但我没有遇到任何问题,因为整个验证可以在../GraphQL/mutations/中的文件中完成。但是,我现在已经开始使用灯塔,许多事情都以不同的方式进行。例如,我有此突变:
type Mutation {
createUser(
name: String @rules(apply: ["required", "min:2"])
age: Int!
): User @create
}
如何在此处添加自己的验证?例如,我希望用户的年龄至少比当前年份早10年。
答案 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'
],
];
}
}