工作中的一些细节问题:
记一次yii2种ajax提交数据时校验出问题,直接跳过addError,报错语不现实‘不存在!’
$this->addError('customer_id', '不存在!');
public function rules()
{
return [
[['customer_id'], 'integer'],
[['customer_id'], 'required'],
['customer_id', 'validateCustomerId'],
];
}
public function validateCustomerId()
{
$this->addError('customer_id', '客户公海不存在!');
// $dataStr = date('Y-m-d', time());
// $startTime = strtotime($dataStr);
// $endTime = strtotime($dataStr) + 86400;
// /** @var Administrator $administrator */
// $administrator = \Yii::$app->user->identity;
// $this->customer = CrmCustomer::findOne($this->customer_id);
// if(null == $this->customer)
// {
// $this->addError('customer_id', '客户不存在');
// }
// /** @var CustomerPublic $customerPublic */
// $customerPublic = $this->customer->customerPublic;
// if(null == $customerPublic)
// {
// $this->addError('customer_id', '客户公海不存在!');
// }
//
// if(null == $administrator->department || !$administrator->isBelongCompany())
// {
// $this->addError('customer_id', '您无权操作!');
// }
//
// if($administrator->company_id != $customerPublic->company_id)
// {
// $this->addError('customer_id', '此客户您无权提取!');
// }
//
// if($this->customer->is_receive && $this->customer->administrator_id > 0)
// {
// $this->addError('customer_id', '该客户已经被提取,不能进行该操作');
// }
//
// //当前客户对应的客户公海保护的数量
// if($customerPublic->extract_number_limit > 0)
// {
// //判断当前客户对应的客户公海是否有最大提取限制(24小时之内),今天已经提取到客户的数量,利用提取时间大于0,并且部门属于客户公海部门或者是客户公海对应部门的下属部门
// $count = CrmCustomer::find()
// ->where(['administrator_id' => $administrator->id])
// ->andWhere(['>=', 'extract_time', $startTime])
// ->andWhere(['<=', 'extract_time', $endTime])
// ->andWhere(['>', 'extract_time', 0])
// ->andWhere(['company_id' => $customerPublic->company_id])
// ->count();
// if($count >= $customerPublic->extract_number_limit)
// {
// $this->addError('customer_id', '对不起,今日提取客户数量以达到上限,请耐心等待明日再次提取哦!');
// }
// }
}
原因:
validateCustomerId()
中的校验有出错的地方,导致addError()不执行
正确的校验应该显示这样的
错误的:
直接跳过第一次遇到的报错,走后面去了
解决:
$this->order后面有遇到需要重复使用到的,就需要return,或者每一个后面加return,低级错误,但是容易犯
public function validateOrderId()
{
$this->order = Order::findOne($this->order_id);
if(null == $this->order)
{
$this->addError('order_id', '订单不存在。');
return ;
}
if($this->order->isBreakService() || $this->order->isCompleteService())
{
$this->addError('order_id', '当前订单状态不能进行该操作。');
}
}
G
M
T
Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu | AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu |
---|
Text-to-speech function is limited to 200 characters
Options : History : Feedback : Donate | Close |
---|