在Laravel中自定义验证功能 [英] customize validation functions in Laravel

查看:96
本文介绍了在Laravel中自定义验证功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很好奇($value & ($value - 1)) != 0在下面的验证中它如何工作才能知道数字是2的幂?!

I am curious about ($value & ($value - 1)) != 0 that how it is working in below validation to know number is power of 2?!

function ($attribute, $value, $fail) {
                    if ($value == 0 || ($value & ($value - 1)) != 0) {
                        $fail($attribute . ' is not power of 2!');
                    }
                }

如果我想获得除2的幂之外的2的幂之间的数字,我该怎么办?我可以使用和修改此命令吗? (例如数字:1,2,3,4,6,8,12,16,...)

If I would like get numbers between numbers of power 2 in addition to power 2 numbers, what shall I do? can I use and modify this command? (e.g. numbers: 1,2,3,4,6,8,12,16,...)

推荐答案

我解决了算法.我为算法创建了一个规则对象:

I Solved the algorithm. I created a Rule Object for my algorithm:

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class DoubleThreshold implements Rule
{
    public function passes($attribute, $value)
    {
        $issue = floor(log($value, 2));
        $power1 = pow(2, $issue);
        $power2 = pow(2, $issue - 1);
        $power3 = $power1 + $power2;

        if ($value == 1 || $value == $power1 || $value == $power2 || $value == $power3)
            return true;
        return false;
    }

    public function message()
    {
        return 'The :attribute is not in consider numbers!';
    }
}

要使用上述规则,我做了这样的事情:

To use the above rule, I did something like this:

public function rules()
{
    return [
        'threshold' => ['required', 'between:1,1000', new DoubleThreshold]
     ];
}

这篇关于在Laravel中自定义验证功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆