Yii2 使用参数和 prettyUrl 重定向到另一个操作
Yii2 Redirect to another action with parameter and prettyUrl
我有这个创建功能的简单操作。
public function actionCreate()
{
$model = new Horse();
$model->attributes = \Yii::$app->request->post('Horse');
if ((\Yii::$app->request->post()) && ($model->validate())) {
$model->save(false);
$this->redirect(
[
'view',
'id' => $model->id
]
);
}
return $this->render(
'create',
[
'model' => $model,
]
);
}
在common/config/main.php下,我定义:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
但是,当 $this->redirect
被调用时,它打开了 URL 而没有考虑上面的配置。
所以,这是我看到的:
http://traditionalbox.back.dev/horse/view?id=11
而不是:
http://traditionalbox.back.dev/horse/view/11
怎么了?
您需要在您的 url 经理上设置规则。
类似于:
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
据我了解,prettyUrl 只是使用 path 格式。
与 ezekielnoob.
共享的学分
我有这个创建功能的简单操作。
public function actionCreate()
{
$model = new Horse();
$model->attributes = \Yii::$app->request->post('Horse');
if ((\Yii::$app->request->post()) && ($model->validate())) {
$model->save(false);
$this->redirect(
[
'view',
'id' => $model->id
]
);
}
return $this->render(
'create',
[
'model' => $model,
]
);
}
在common/config/main.php下,我定义:
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
],
但是,当 $this->redirect
被调用时,它打开了 URL 而没有考虑上面的配置。
所以,这是我看到的:
http://traditionalbox.back.dev/horse/view?id=11
而不是:
http://traditionalbox.back.dev/horse/view/11
怎么了?
您需要在您的 url 经理上设置规则。
类似于:
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
据我了解,prettyUrl 只是使用 path 格式。
与 ezekielnoob.
共享的学分