laravel-使用自定义值进行验证

laravel-使用自定义值进行验证,laravel,forms,validation,Laravel,Forms,Validation,我的表单有一个文本框和3个单选按钮。 单选按钮指示用户想要使用哪种类型的工具,但他需要将它们放在他的库存中。有3种工具,每个单选按钮只有在他至少拥有其中一种时才能被选择。。我想向se证实他是否真的拥有一个。在下面的示例中,变量$tool1-3包含用户拥有的每个工具的数量。(例如:$tool1=1、$tool2=3、$tool3=0)在这种情况下,如果用户选择了前两个单选按钮中的一个,则验证应该是正常的,因为他拥有所需的工具,但如果他选择了第三个单选按钮,则验证应该失败 字段“tool”包含实际选

我的表单有一个文本框和3个单选按钮。 单选按钮指示用户想要使用哪种类型的工具,但他需要将它们放在他的库存中。有3种工具,每个单选按钮只有在他至少拥有其中一种时才能被选择。。我想向se证实他是否真的拥有一个。在下面的示例中,变量
$tool1-3
包含用户拥有的每个工具的数量。(例如:
$tool1=1、$tool2=3、$tool3=0
)在这种情况下,如果用户选择了前两个单选按钮中的一个,则验证应该是正常的,因为他拥有所需的工具,但如果他选择了第三个单选按钮,则验证应该失败

字段“tool”包含实际选定的刀具,因此刀具可以是tool1、tool2或tool3

$tool1;
$tool2;
$tool3;

$data = request()->validate([
        'name'=> 'required',
        'tool' => 'required',
    ]);

如何做到这一点?

以下数据结构您可以使用,并且应该可以获得,因为我了解您的域

$tools = collect(['tool1' => $tool1, 'tool2' => $tool2, 'tool3' => $tool3]);
查找计数大于0的所有工具,
filter()
删除所有空值,因为0==null。要验证输入,我们只需要名称,通过
keys()
获得名称

现在我们可以使用
In()
验证来检查输入是否正确

use Illuminate\Validation\Rules\In;

...

'tool' => ['required', new In($toolsOwned->all())],

非常感谢你!是否还有方法指定显示的错误代码?当字段验证失败时,通常会显示一个错误、一些文本。。(对不起,不是代码,是我的错)我想告诉你,他们没有这个工具。。。
use Illuminate\Validation\Rules\In;

...

'tool' => ['required', new In($toolsOwned->all())],