当前位置: 首页 > 知识库问答 >
问题:

Laravel有时验证规则

经昱
2023-03-14

我正在尝试验证密码字段是否存在。我想允许某人编辑用户,他们可能想更改用户密码,也可能不想更改用户密码。所以我想我可以使用Laravels验证规则,特别是“有时”规则来实现这一点。我有一套规则:

$this->validate($request, [
    'password' => 'sometimes|required|min:8',
]);

例如,对于其他字段,通常会有其他规则,而对于密码,则会有更严格的规则。如果传递的数据中存在密码字段,我希望这只应用min:8规则,但是如果我将密码字段留空,则会出现一个验证错误,表明密码字段是必需的。

我不确定我在文件中没有理解什么。如果表单输入是这样空提交的,我是否需要在验证前手动删除密码字段?

$data = $request->all();

if ('' === $data['password']) {
    unset($data['password'])
}

...然后将数组传递给验证器。我认为这是有道理的,但我可以做一些确认,我的理解是正确的。提前谢谢。

共有3个答案

袁永贞
2023-03-14

“我仅在密码字段存在时才尝试验证它。”

为此,您可以在验证系统中使用“可为空”规则。

例如:

$this->validate($request, [
    'password' => 'sometimes|nullable|min:8',
]);

有关更多信息,请参阅https://laravel.com/docs/5.6/validation “关于可选字段的说明”下的部分

漆雕硕
2023-03-14

文档没有明确说明,但删除必需项可以使其正常工作。

$this->validate($request, [
    'password' => 'sometimes|min:8',
]);
白高逸
2023-03-14

我认为我们应该告诉laravel如果密码不是空的把规则,否则什么都不做。

$this->validate($request, [
  'password' => $request->password != null ?'sometimes|required|min:8': ''
]);
 类似资料:
  • 如何在验证器中添加密码验证规则? 验证规则: 密码包含以下五个类别中至少三个类别的字符: 英文大写字符(A–Z) 英文小写字符(a–z) 以10位数字(0–9)为基数 非字母数字(例如:!、$、#或%) Unicode字符 如何在验证器规则中添加上述规则? 我的代码在这里

  • 我做了一个自定义验证规则,它迭代一个包含键

  • 本文向大家介绍laravel 数据验证规则详解,包括了laravel 数据验证规则详解的使用技巧和注意事项,需要的朋友参考一下 如下所示: 简单例子 特殊例子 以上这篇laravel 数据验证规则详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 验证规则的定义通常有两种方式,如果你使用了验证器的话,通常通过rule属性定义验证规则,而如果使用的是独立验证的话,则是通过rule方法进行定义。 属性定义 属性定义方式仅限于验证器,通常类似于下面的方式: <?php namespace app\index\validate; use think\Validate; class User extends Validate { prot

  • 问题内容: 我有一个laravel 模型,该模型在和上具有唯一的验证规则。在我的存储库中,当我更新模型时,我将重新验证字段,以使所需的规则验证没有问题: 测试失败 有没有办法优雅地解决这个问题? 问题答案: 将当前正在更新的实例的追加到验证器。 传递实例的来忽略唯一的验证器。 在验证器中,使用参数来检测您是否正在 更新 或 创建 资源。 如果进行更新,则强制唯一规则忽略给定的id: 如果创建,请照

  • 我正在设置一个laravel-echo-server,当我试图验证到一个私有通道时,我得到了错误:客户端无法被验证,得到了HTTP状态404。 授权公共渠道工程。 //channels.php //前端脚本验证到私有通道 //拉威尔回声服务器。json //引导。js 简单地说,我的laravel echo是通过应用程序加载的。在public/js中的js,引导程序中的所有库。js被加载进来。好的