getRequest()->getIsPost()) {//for safety, delete need POST if( !is_string($this->primaryKeyIdentity) ){ throw new Exception(__CLASS__ . "::primaryKeyIdentity only permit string"); } $data = Yii::$app->getRequest()->post($this->primaryKeyIdentity, null); if ($data === null) {//不在post参数,则为单个删除 $data = Yii::$app->getRequest()->get($this->primaryKeyIdentity, null); } if (!$data) { throw new BadRequestHttpException(Yii::t('app', "{$this->primaryKeyIdentity} doesn't exist")); } if( is_string($data) ){ if( (strpos($data, "{") === 0 && strpos(strrev($data), "}") === 0) || (strpos($data, "[") === 0 && strpos(strrev($data), "]") === 0) ){ $data = json_decode($data, true); }else{ $data = [$data]; } } !isset($data[0]) && $data = [$data]; $errors = []; foreach ($data as $id){ $deleteResult = call_user_func_array($this->doDelete, [$id, $this]); if($deleteResult !== true && $deleteResult !== "" && $deleteResult !== null){ $errors[]= Helper::getErrorString($deleteResult); } } if (count($errors) == 0) { if( Yii::$app->getRequest()->getIsAjax() ) { Yii::$app->getResponse()->format = Response::FORMAT_JSON; return ['code'=>0, 'msg'=>'success', 'data'=>new stdClass()]; }else { return $this->controller->redirect(Yii::$app->getRequest()->getReferrer()); } } else { if( Yii::$app->getRequest()->getIsAjax() ){ Yii::$app->getResponse()->format = Response::FORMAT_JSON; throw new UnprocessableEntityHttpException(implode("
", $errors)); }else { Yii::$app->getSession()->setFlash('error', implode("
", $errors)); } } } else { throw new MethodNotAllowedHttpException(Yii::t('app', "Delete must be POST http method")); } } }