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"));
}
}
}