我遇到了这样的问题。 我想要做的是为用户数据的验证规则制作1个地方。这些数据由患者,地址和其他对象组成。 所以我创建的规则:PHP Laravel验证数据密钥名称
protected function validationRules()
{
return [
'Patient.firstName' => 'required|string|min:2',
'Patient.lastName' => 'required|string',
'Patient.sex' => 'required|string',
'Address.city' => 'required|string',
'Address.states' => 'required|string',
'Address.address1' => 'required|string|min:2',
'Address.zip' => 'required|string|min:2',
'Phone.mobileArea' => 'string|min:3|required_with:Phone.mobilePhone',
'Phone.mobilePhone' => 'string|min:7|required_with:Phone.mobileArea',
'Phone.homePhone' => 'string|min:7|required_with:Phone.homeArea',
'Phone.homeArea' => 'string|min:3|required_with:Phone.homePhone',
];
}
形式I具有输入,比如
<input id="firstName" type="text" class="form-control" name="Patient[firstName]" value="{{ $user->getFirstName() }}" required autofocus placeholder="First Name">
而且在节省一切正常。 代码 $this->validate($request, $this->validationRules());
执行验证非常好。但....
在另外一个地方,当我想表明,一些信息在用户配置文件丢失,我执行这样的验证和它的失败:
$validator = Validator::make([
'Patient[firstName]' => $user->getFirstName(),
'Patient[lastName]' => $user->getLastName(),
'Patient.lastName' => $user->getLastName(),
'Patient->lastName' => $user->getLastName(),
'Patient.sex' => $user->getSex(),
'Address.city' => $address->getCity(),
'Address.states' => $address->getState(),
'Address.address1' => $address->getStreet1(),
'Address.zip' => $address->getZip(),
'Phone.mobileArea' => $mobilePhone->getArea(),
'Phone.mobilePhone' => $mobilePhone->getNumber(),
'Phone.homePhone' => $homePhone->getArea(),
'Phone.homeArea' => $homePhone->getNumber(),
], $this->validationRules());
正如你所看到的,我试过在数据数组中命名Patient-> lastName键的不同变体。但我仍然有错误,姓氏是必需的。 当我打印验证我可以看到这样的结构:
Validator {#300 ▼
#data: array:12 [▼
"Patient[firstName]" => ""
"Patient[lastName]" => "Colohanin"
"Patient->lastName" => "Colohanin"
"Patient->sex" => "female"
"Address->city" => "GOSHEN2"
"Address->states" => "NY"
"Address->address1" => "Aleco Russo 59/1 a.68"
"Address->zip" => "109242"
"Phone->mobileArea" => "793"
"Phone->mobilePhone" => "906990"
"Phone->homePhone" => "022"
"Phone->homeArea" => "3322278"
]
#initialRules: array:1 [▼
"Patient.lastName" => "required|string"
]
}
据我了解,验证是否有“Patient.lastName”,但在数据阵列Laravel改造这个关键对象,并验证找不到这个关键规则在数据包中。在结果,我有错误 - >所需的患者姓氏(用于测试目的,我删除了其他规则)
所以有我的问题。有谁知道,如何在“dot”sintancs中设置数据数组?我应该如何命名数据数组中的“Patient.lastName”(Validator :: make()中的第一个参数)?使用下划线不接受
重写键(patient_firstName)
的laravel文档状态,你需要使用点语法'验证::使()'。该错误必须在其他地方。 –
正如你所看到的,我试过dot -syntax,但vaidator不能找到它 –
@ xcy7e웃你的评论帮助我找到array_set函数感谢 –