yii2种ajax提交数据时校验出问题

工作中的一些细节问题:

记一次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()不执行

正确的校验应该显示这样的

095518_sNrh_2854024.png

错误的:

095553_vBpu_2854024.png

直接跳过第一次遇到的报错,走后面去了

解决:

$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 : DonateClose

转载于:https://my.oschina.net/botkenni/blog/1631424

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值