我无法验证模型中的值。我是新手,任何人都可以建议我做错了什么。我正在使用REST API与Excel文件上传和验证单行的时间
这是我的数据和模型中的负载数据
$data = array(
'firstName' => 'asdjqkw',
'lastName' => '',
'email' => 'ansm@',
'companyName' => 'ddq',
'address_1' => '',
'address_2' => 'aas',
'country' => '',
'state' => 'New Brunswick',
'city' => '87875',
'zip' => '484527',
);
$model->load($data);
if (!$model->validate()) {
$validation = $model->errors;
}
这是我定义的模型规则和属性标签required、email和maxlength验证,但仍有一些值可用,它仍在发送该字段的required验证错误
public function rules() {
return [
[['firstName', 'lastName', 'email', 'companyName', 'address_1', 'country', 'state', 'city', 'zip'], 'required'],
['email', 'email'],
[['firstName', 'lastName', 'email', 'companyName', 'address_1', 'country', 'state', 'city', 'zip'], 'string', 'max' => 250],
];
}
public function attributeLabels() {
return [
'firstName' => 'First Name',
'lastName' => 'Last Name',
'email' => 'Email',
'companyName' => 'Company Name',
'address_1' => 'Address 1',
'country' => 'Country',
'state' => 'State',
'city' => 'City',
'zip' => 'Zip',
];
}
加载此数据后,我收到验证错误
"firstName": [
"First Name cannot be blank."
],
"lastName": [
"Last Name cannot be blank."
],
"email": [
"Email cannot be blank."
],
"companyName": [
"Company Name cannot be blank."
],
"address_1": [
"Address 1 cannot be blank."
],
"country": [
"Country cannot be blank."
],
"state": [
"State cannot be blank."
],
"city": [
"City cannot be blank."
],
"zip": [
"Zip cannot be blank."
]
1条答案
按热度按时间xdyibdwo1#
这里发生的事情是你在调用你的模型的load方法,它有两个参数,第一个是你的data,第二个是formName,当没有声明formName参数时,Yii 2会把它设置为等于你的模型,所以在这种情况下,它会尝试像这样加载数据:$data ['modelName'].所以你可以修改你的数据数组,使其符合下面的格式:
但是有一种更简单的方法,不需要我们不断地记住如何构造数据数组:将“load”方法的“formName”参数设置为空字符串,如下所示:
这样做的原因是它允许以下代码在'load'方法内部运行(其中$scope是formData参数):
这样我们就可以继续在更少的维度上编写数组,这是一种小而好的方法,可以让数组稍微整洁一些:)。