save($runValidation, $attributeNames)){ throw new Exception(implode(',',$this->getFirstErrors())); } return true; } /** * 新增和编辑数据的时候 * @param $insert * @throws \Exception */ public function beforeSave($insert) { if (parent::beforeSave($insert)) { // 加密ID卡信息之前检查是否已经加密过 if (!empty($this->idcard) && !$this->is_encrypted($this->idcard)) { $this->idcard = (new DataEncryptor(\Yii::$app->params['ase_key']))->encrypt($this->idcard); } // 加密ID卡信息之前检查是否已经加密过 if (!empty($this->id_card) && !$this->is_encrypted($this->id_card)) { $this->id_card = (new DataEncryptor(\Yii::$app->params['ase_key']))->encrypt($this->id_card); } return true; } return false; } public function afterFind() { parent::afterFind(); // 解密ID卡信息之前检查是否已经是明文 if (!empty($this->id_card) && $this->is_encrypted($this->id_card)) { $this->id_card = (new DataEncryptor(Yii::$app->params['ase_key']))->decrypt($this->id_card); } if (!empty($this->idcard) && $this->is_encrypted($this->idcard)) { $this->idcard = (new DataEncryptor(Yii::$app->params['ase_key']))->decrypt($this->idcard); } } private function is_encrypted($data): bool { if (!is_string($data)) { return false; } // 这里应该有逻辑来判断$data是否已经被加密。未加密是true return strpos($data, 'xk_ase_256_') === 0; } }