Hallo allerseits i erholsamen api in yii2
bin der Umsetzung und einen Konflikt in ActionDelete
mit und ActionDeleteall
Löschen und DeleteAll Aktion Überschreibung in yii2 ActiveController
, wenn ich einen Parameter in URL wie http://localhost/yii2-api/api/modules/v1/countries/CD
passieren, es funktioniert und löscht den Eintrag CD
aus Datenbank mit DELETE
Anfrage. Ich weiß nicht, wie ich mehrere codes
in URL übergeben kann, so dass es auf actionDeleteall
umleitet. Hier ist mein controller
Code.
class CountryController extends ActiveController
{
public $modelClass = 'api\modules\v1\models\Country';
public function actions()
{
$actions = parent::actions();
unset($actions['index']);
unset($actions['create']);
unset($actions['delete']);
unset($actions['update']);
unset($actions['view']);
return $actions;
}
public function actionDelete($id)
{
$model=$this->findModel($id);
if($model->delete())
{
$this->setHeader(200);
echo json_encode(array('status'=>1,'data'=>array_filter($model->attributes)),JSON_PRETTY_PRINT);
}
else
{
$this->setHeader(400);
echo json_encode(array('status'=>0,'error_code'=>400,'errors'=>$model->errors),JSON_PRETTY_PRINT);
}
}
public function actionDeleteall()
{
$ids=json_decode($_REQUEST['codes']);
$data=array();
foreach($ids as $id)
{
$model=$this->findModel($id);
if($model->delete())
$data[]=array_filter($model->attributes);
else
{
$this->setHeader(400);
echo json_encode(array('status'=>0,'error_code'=>400,'errors'=>$model->errors),JSON_PRETTY_PRINT);
return;
}
}
$this->setHeader(200);
echo json_encode(array('status'=>1,'data'=>$data),JSON_PRETTY_PRINT);
}
}
Hier ist mein urlmanager
Code
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => false,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => 'v1/country', // our country api rule,
'tokens' => [
'{id}' => '<id:\\w+>'
],
]
],
]
wissen Lassen Sie mich, wie ich diese Aktion überschreiben können und den Zugang mit mehreren codes
geben. Danke
Ich aktualisiere haben die Antwort – scaisEdge
versucht, das so gut, aber es geht zu 'actionDelete ($ id)' nur, wenn ich pass 1 Wert in URL wie http: // localhost/yii2-api/api/web/v1/countries/27 und wenn ich http: // localhost/yii2-api/api/web/v1/countries/codes = [27,28] mit der Methode 'DELETE' übergebe, gibt es einen Fehler von 404. –
I habe update die Antwort .. – scaisEdge