Как только я прохожу 41 по URL. confirm.php отпечатки 41.
HTTP: // локальный / yii2-приложение основного / веб / сайт / подтвердить / 41
Но, когда я передаю «cfeb70c4c627167ee56d6e09b591a3ee» или «41a» в URL,
HTTP: // локальный / yii2-приложение основного / веб / сайт / подтвердить / 41а
он показывает ошибку
НЕ НАЙДЕНО (# 404)
Страница не найдена.Вышеупомянутая ошибка возникла, когда веб-сервер обрабатывал ваш запрос. Если вы считаете, что это ошибка сервера, свяжитесь с нами. Спасибо.
Я хочу отправить идентификатор подтверждения пользователю, чтобы подтвердить свою учетную запись. Вот почему передается случайное число «cfeb70c4c627167ee56d6e09b591a3ee».
Итак, что я могу сделать, чтобы URL-адрес принимал альфа-числовой параметр.
конфиг / web.php
'urlManager' => [ 'showScriptName' => false, 'enablePrettyUrl' => true, 'enableStrictParsing' => false, 'rules' => [ '<controller>/<action>/<id:\d+>' => '<controller>/<action>' ], ],
SiteController.php
public function actionConfirm($id) { $id = Yii::$app->request->get('id'); $this->view->params['customParam'] = $id; return $this->render("confirm",array("id"=>$id)); }
Изменить эту строку
'<controller>/<action>/<id:\d+>' => '<controller>/<action>'
к этому
'<controller>/<action>/<id:[a-z0-9]+>' => '<controller>/<action>'
Это должно сделать это
В текущем правиле указано, что id является числом ( \d+
), поэтому он не работает в ваших примерах. Вместо того, чтобы изменять текущее правило, я бы добавил его специально для этого случая:
'rules' => [ 'site/confirm/<id:\w+>' => 'site/confirm', '<controller>/<action>/<id:\d+>' => '<controller>/<action>' ],