如何解决选择单选按钮时,Laravel 验证将正则表达式匹配到单个输入
基本上有 3 个单选按钮 - ssn,cin,no。其中“no”不是 ssn 或 ein 号码。单个输入文本字段允许他们根据他们的单选按钮选择在字段中分别输入他们的号码。
所以我试图根据他们的选择返回一个正则表达式。
Identifier 是单选按钮,而 identifier_num 是文本字段。
$validator = Validator::make($request->all(),[
'identifier' => ['required',Rule::in(['ssn','ein','no'])],//'identifier_num' => 'required_if:identifier,sin,ein','identifier_num'=> Rule::RequiredIf(function(){
if(request()->input('identifier') == 'ssn'){
return preg_match("/^\d{3}-\d{2}-\d{4}$/",request()->input('identifier_num'));
}
elseif(request()->input('identifier') == 'ein'){
return preg_match("/^[1-9]\d?-\d{7}$/",request()->input('identifier_num'));
}
正确落入函数中。我可以登录输入。但是我在文本字段中放入了一些东西。无论输入如何,都通过验证。 对此有什么建议吗?
添加了更多上下文。
单选按钮
<input id="ssn" type="radio" name="identifier" value="ssn"/>
<input id="ein" type="radio" name="identifier" value="ein"/>
<input id="no" type="radio" name="identifier" value="no"/>
输入字段..
<input id="identifier_num" type="text" name="identifier_num" value=""/>
编辑:这似乎按预期工作,但不是很优雅。
'identifier' => ['required','identifier_num'=> Rule::RequiredIf(function()
{
if(request()->input('identifier') == 'ssn')
{
if(!preg_match("/^\d{3}-\d{2}-\d{4}$/",request()->input('identifier_num')))
{
$error = \Illuminate\Validation\ValidationException::withMessages([
'identifier_num' => ['This is not a valid Social Security Number'],]);
throw $error;
}
}
elseif(request()->input('identifier') == 'ein')
{
if(!preg_match("/^[1-9]\d?-\d{7}$/",request()->input('identifier_num')))
{
$error = \Illuminate\Validation\ValidationException::withMessages([
'identifier_num' => ['This is not a valid Ein Number'],]);
throw $error;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。