在验证之前更改请求对象


Alter request object before validation

if($key == "postcode") {
    $this->validate($request, [
    'postcode' => ['required','regex:#^(GIR ?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]([0-9ABEHMNPRV-Y])?)|[0-9][A-HJKPS-UW]) ?[0-9][ABD-HJLNP-UW-Z]{2})$#'],
    ]);
}

我需要将邮政编码字段转换为大写,然后再将其传递给此验证函数。我试过$request->input('postcode') = strtoupper($request->input('postcode'));但得到了;

不能在写入上下文中使用方法返回值。

我想理想地将$request保留为整个Request对象。否则我只会自己通过$request->input('postcode')。实际上我认为该方法是针对Request的类型提示。

这是拉拉维尔 5.1

您可以使用

merge方法执行此操作:

$request->merge(array('postcode' => strtoupper($request->input('postcode'))));

也许有趣的是,您可以通过在正则表达式末尾添加 i 修饰符来使验证不区分大小写:

#^(GIR .... $#i