Php 在自定义规则文件中使用默认的laravel验证规则

Php 在自定义规则文件中使用默认的laravel验证规则,php,laravel,laravel-5,Php,Laravel,Laravel 5,我想验证我的输入是UUID还是“最后一个问题”。我创建了一个自定义验证规则LastOrUUID,我想在其中使用UUID验证规则。我找不到任何方法来做到这一点,也许你知道什么是正确的方式来实现这一点?我的上下文自定义规则: class LastOrUUID implements Rule { /** * Determine if the validation rule passes. * * @param string $attribute * @p

我想验证我的输入是UUID还是“最后一个问题”。我创建了一个自定义验证规则
LastOrUUID
,我想在其中使用UUID验证规则。我找不到任何方法来做到这一点,也许你知道什么是正确的方式来实现这一点?我的上下文自定义规则:

class LastOrUUID implements Rule
{
    /**
     * Determine if the validation rule passes.
     *
     * @param string $attribute
     * @param mixed $value
     * @return bool
     */
    public function passes($attribute, $value)
    {

        if ($value === 'LAST_QUESTION' /* || this is uuid */) {

            return true;

        }

        return false;

    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        // TODO - add translation
        return 'This should either be the last question or have a reference to next question!';
    }
}

如果您只想验证给定值是否为UUID,则可以使用Laravel的本机方法(在后台使用正则表达式)、的方法或普通正则表达式(根据):


如果您只想验证给定值是否为UUID,则可以使用Laravel的本机方法(在后台使用正则表达式)、的方法或普通正则表达式(根据):


是的,我知道,谢谢你的回答!但我的想法是——如果有一个拉威尔规则,它一定是以某种方式实现的,应该是可重用的,不是吗?在我验证UUID的任何地方使用相同的UUID验证实现都是一个很好的实践,我错了吗?好主意!确实存在可用的UUID验证规则。它使用的也是基于。我会把它添加到我的帖子中,因为我不知道Laravel提供了这种方法。谢谢!我更喜欢这个解决方案。非常有帮助。是的,我知道,谢谢你的回答!但我的想法是——如果有一个拉威尔规则,它一定是以某种方式实现的,应该是可重用的,不是吗?在我验证UUID的任何地方使用相同的UUID验证实现都是一个很好的实践,我错了吗?好主意!确实存在可用的UUID验证规则。它使用的也是基于。我会把它添加到我的帖子中,因为我不知道Laravel提供了这种方法。谢谢!我更喜欢这个解决方案。非常有用。我想你的意思是在自定义类中继承默认验证@纳扎里:是的,那将是理想的。但是我很高兴至少使用了
Str::isUuid()
,如果它被Laravel使用,并且没有更好的方法。我想你的意思是在自定义类中继承默认验证@纳扎里:是的,那将是理想的。但我很高兴至少使用了
Str::isUuid()
,如果它被Laravel使用,并且没有更好的方法。
// Laravel native
use Illuminate\Support\Str;

return $value === 'LAST_QUESTION' || Str::isUuid($value);

// Ramsey's package
use Ramsey\Uuid\Uuid;

return $value === 'LAST_QUESTION' || Uuid::isValid($value);

// RegEx
return $value === 'LAST_QUESTION' || preg_match('/[a-f0-9]{8}\-[a-f0-9]{4}\-4[a-f0-9]{3}\-(8|9|a|b)[a-f0-9]{3‌​}\-[a-f0-9]{12}/', $value);