我想验证我的输入是UUID还是“ LAST_QUESTION”。我创建了一个自定义验证规则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的本机Str::isUuid
方法(在幕后使用RegEx),Ramsey的UUID软件包的isValid
方法或普通RegEx(根据此答案):
// 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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句