Laravel中的required_if验证

simon_eds

我正在尝试添加规则以验证字段。仅在主体字段包含HTML时才需要“代码段”字段。我的控制器存储方法中有以下内容,但我无法完全弄清楚required_if如何与正则表达式结合使用以检查字段是否包含HTML:

$newsitem->update(request()->validate([
            'snippet' => 'nullable|max:255|not_regex:/[<>]/',
            'body' => 'required',
            ]));

从Laravel文档来看,它看起来像:'required_if:anotherfield,value'验证规则返回基于值的布尔值,但是我需要基于body字段的正则表达式检查返回布尔值。

我知道我可以检查身体是否等于一个:

'snippet' => 'required_if:body,==,1|nullable|max:255|not_regex:/[<>]/'

...但是我需要一些东西来检查主体是否包含<或>。(我可以在表单提交中添加一个隐藏字段,如果正文使用javascript包含html,则会获得一个值集,但我希望能够通过后端验证来处理此问题。)

我需要使用自定义验证规则,还是可以仅使用默认的Laravel验证规则来处理?

我在Laravel文档中已经看到可以使用::Rule::requiredIf方法建立更复杂的条件。这是我可以与contains_hmtl函数一起使用的东西吗?

'snippet' => Rule::requiredIf($request->snippet()->contains_html),

我真的觉得我在这里缺少什么,所以任何指针将不胜感激。

DigitalDrifter

尝试使用以下正则表达式RequiredIf

[
    ...,
    'snippet' => ['nullable', 'max:255', new RequiredIf(function () {
        return preg_match('/<[^<]+>/m', request()->input('body')) !== 0;
    })],
    ...,
]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章