Я пытаюсь вызвать пользовательское действие ajax, но ответ возвращается 404, я уверен, что это проблема маршрутизации, но я не могу понять, как ее решить , вот мой код:Yii2: мое новое действие не найдено - 404
действия
public function actionGetOne($id){
$model = Driver::findOne($id);
if(!empty($model)){
$data = [];
$row = [
'id'=>$model->id,
'full_name'=>$model->full_name,
'email'=>$model->email,
'nationality_id'=>$model->nationality_id,
'current_location'=>$model->current_location,
'medical_check_id'=>$model->medical_check_id,
'img'=>$model->img,
'current_fleet_id'=>$model->current_fleet_id,
'availability'=>$model->availability
];
$data[] = $row;
echo json_encode(['driver-getOne'=>'success','data'=>$data]);
} else{
echo json_encode(['driver-getOne'=>'failure']);
}
}
Аякс
$.ajax({
url:'<?= urldecode(Url::toRoute(['driver/get-one'])); ?>?id=<?= $id; ?>',
method:'post',
dataType:'json',
success:function(response){}
error:function(){
alert('target action is not found!');
}
}
бэкенд/конфигурация/params.php
<?php
return [
'adminEmail' => '[email protected]',
'urlRules' => [
'' => 'site/index',
'login/' => 'site/login',
'signup/' => 'site/signup',
'<controller:[\w-]+>/<action:\w+>' => '<controller>/<action>',
'<controller:[\w-]+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:[\w-]+>/<id:\d+>' => '<controller>/view',
'<controller:[\w-]+>/create' => '<controller>/create',
'<controller:[\w-]+>/update/<id:\d+>' => '<controller>/update',
'<controller:[\w-]+>/delete/<id:\d+>' => '<controller>/delete',
'<controller:[\w-]+>/get-all' => '<controller>/get-all',
'<controller:[\w-]+>/get-one' => '<controller>/get-one',
'<controller:[\w-]+>/update-status' => '<controller>/update-status',
]
];
Благодарим вас за усовершенствования, но это не решит мою проблему. Проблема заключалась в том, что имя верблюда было названо действием. – Mohammad
Не совсем. Имя функции GetOne преобразуется в маршрутизацию как 'get-one', но вы пропустили правильный шаблон регулярного выражения (' [\ w -] + 'вместо' \ w + '), чтобы не было сопоставления маршрутизации. Я исправил это и исправил другие вещи, потому что я так хорош;) – Bizley