工作中的一些细节问题:
记一次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 |