【问题标题】:Laravel - Validate value against stringLaravel - 根据字符串验证值
【发布时间】:2018-07-06 00:03:23
【问题描述】:

我正在像这样的 Laravel 5.5 控制器中运行一些基本验证...

                   $this->validate($request, [
                        'name' => 'required|max:30',
                        'email' => 'required|unique:users|email',
                        'password' => 'required|max:20',
                        'mykey' => 'required',
                    ]);

有没有办法检查 'mykey' 是否匹配我保存的 php 字符串?我知道我可以做一个 if 语句并比较它们,但想知道是否有办法在验证本身中做到这一点?

【问题讨论】:

  • 你的意思是这样? stackoverflow.com/questions/23509802/…
  • 我看过'same'和'confirm',但没有发现'in' - 现在看看,谢谢
  • 你的意思是保存在数据库中吗?如果找到字符串会发生什么?

标签: laravel


【解决方案1】:

你可以这样规定:

$key = "my_saved_key"
$request->validate([
    'name' => 'required|max:30',
    'email' => 'required|unique:users|email',
    'password' => 'required|max:20',
    'mykey' => 'in:' . $key,
    ]    
]);

【讨论】:

    【解决方案2】:

    您可以使用in 规则,这适用于 n 个值

    $request->validate([
        'name' => 'required|max:30',
        'email' => 'required|unique:users|email',
        'password' => 'required|max:20',
        'mykey' => [
            Rule::in([env('MY_KEY'),config('app.another_key')]),
        ]    
    ]);
    

    【讨论】:

      【解决方案3】:

      Laravel 提供了一个 regex 选项用于验证。根据字符串比较的复杂性,它可能很有用:

      https://laravel.com/docs/5.5/validation#rule-regex

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-05-09
        • 2016-06-05
        • 2019-07-16
        相关资源
        最近更新 更多