Удалить и удалить все действия переопределения в yii2 ActiveController
Привет всем, я внедряю успокоительный API в yii2
и иметь конфликт в ActionDelete
а также ActionDeleteall
когда я передаю один параметр в URL, как http://localhost/yii2-api/api/modules/v1/countries/CD
работает нормально и удаляет запись CD
из базы данных с DELETE
запрос. Я не знаю, как я могу передать несколько codes
в URL, чтобы он перенаправил на actionDeleteall
, Вот мой controller
код.
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);
}
}
Вот мой urlmanager
код
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => false,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => 'v1/country', // our country api rule,
'tokens' => [
'{id}' => '<id:\\w+>'
],
]
],
]
Дайте мне знать, как я могу отменить это действие и получить к нему доступ с несколькими codes
прошло. Спасибо
2 ответа
Вы можете разместить массив значений идентификатора массива и выполнить цикл
Это всего лишь краткое предложение
Конечно, вы должны оценить правильную ошибку в результате управления эхом
public function actionDelete($myArray)
{
foreach( $myArray as $key => $value){
$model=$this->findModel($value)
$model->delete();
}
}
Если у вас есть массив идентификаторов в
$myArray[0] = 'CD';
$myArray[1] = 'AA';
URL должен быть
HTTP: // локальный / yii2-апи / API / horsebuzz / API / Web / v1 / страны / туАггау = [27,28]
Или, если вы используете код, используйте actionDelete($code) ... и так далее
Или лучше, если использовать UrlHelper
Url::to(['/countries/delete' , 'myArray' => [27,28] ]);
Url::to(['/countries/delete' , 'myArray' => $myArray ]);
Сначала отключи строгий парсинг в urlmanager
'enableStrictParsing' => false
тогда вы можете вызывать ваши пользовательские действия с любым методом, URL будет выглядеть
http://localhost/yii2-api/api/web/v1/country/uraction