Php 在自定义规则文件中使用默认的laravel验证规则
我想验证我的输入是UUID还是“最后一个问题”。我创建了一个自定义验证规则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
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);