【问题标题】:Laravel 5.3 Validation Regex check for True or False failsLaravel 5.3 验证正则表达式检查真或假失败
【发布时间】:2017-03-20 20:29:43
【问题描述】:

在 Laravel 5.1 中,我曾经使用 Regex Match 进行验证检查以查看发布的值是否设置为 truefalse。发布的值是这样的:

acceptTerms   true

然后我检查来自 Laravel 验证的值,如下所示:

$validator = Validator::make($postData, [
  'acceptTerms'   => ["regex:(true|false)"],
]);

自从更新到 Laravel 5.3 后,上述验证规则失败,总是抛出错误:acceptTerms format is invalid.

为什么会失败,如何检查 Laravel 5.3 中的值是否设置为 truefalse

编辑 1:

我忘了添加,发布的数据以JSON.stringify(data) 发送,在 Laravel 中我以Input::json('data') 接收。这会改变什么吗?

编辑 2:

dd($postData) 返回:

array:31 [
  "id" => "8"
  "appId" => "1"
  "name" => "Asdsad"
  "acceptTerms" => true
  ]

【问题讨论】:

  • 三元运算符?
  • 对不起,我不明白。
  • 我还没有在我的问题中添加的另一点是,发布的数据以JSON.stringify(data) 发送,在 Laravel 中我以Input::json('data') 接收它。这会改变什么吗?
  • 将传递给验证器的内容发布到验证器失败可能会有所帮助。也许很简单dd($postData)
  • 谢谢@nozzleman 我已经用dd($postData)的回复更新了我的问题

标签: regex laravel validation laravel-5.3 laravel-validation


【解决方案1】:

你可以用in() 试试这个:

'acceptTerms'   => 'in:true,false',

【讨论】:

  • 为此我收到错误Method [validateTrue,false] does not exist.
  • 当使用正则表达式模式时,可能需要在数组中指定规则而不是使用管道分隔符,尤其是当正则表达式包含管道字符时。
  • 感谢@Amit 的更新。验证仍然失败,我得到了input is invalid error。我之前没有在我的问题中添加的另一点是,发布的数据以JSON.stringify(data) 发送,在 Laravel 中我以Input::json('data') 接收它。这会改变什么吗?
  • 您可以dd($postData) 并发布您的问题吗?
  • boolean 在这种情况下验证对我有用。感谢您对@Amit 的支持。我很感激。
【解决方案2】:

如果是布尔值,可以使用boolean

我猜它比regex 更具可读性。

验证中的字段必须能够转换为布尔值。接受的输入是真、假、1、0、“1”和“0”。

【讨论】:

  • 就是这样!你今天救了我两次。谢谢各位!我一直认为boolean 检查仅适用于 1 和 0,并且从未在 5.3 中尝试过。将验证更新为 boolean 就可以了。
  • 很高兴它有帮助。 )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 2020-11-21
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多