Yii2 - 如何路由页面
Yii2 - how to route for the page
本人是学习Yii2框架的新手(装过Yii2进阶版)。
目前我有 "standart" 带有顶部菜单的前端(主页/关于/联系等)。我想在顶部菜单中添加附加部分(例如 "Advanced Contact" 显示高级联系表。
所以,我做了下一个:
已添加到 main.php 附加菜单部分
$menuItems = [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
['label' => 'Advanced Contact', 'url' => ['/site/advancedcontact']]
];
已将 ContactPage 视图 (contact.php) 作为高级contact.php 复制到同一文件夹中。
但是在按下 link 之后我收到了消息
未找到 (#404)
无法解决请求:site/advancedcontact
我应该如何纠正这个错误?
你是不是也复制了controller里面的函数?在 frontend/controllers/SiteController.php 你应该有这样的东西。
/**
* Advanced Contact Form action
*
* Renders the advanced contact page and processes any form submissions.
*
* @return string Rendering result
*/
public function actionAdvancedcontact()
{
$model = new ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
} else {
Yii::$app->session->setFlash('error', 'There was an error sending email.');
}
return $this->refresh();
} else {
return $this->render('advancedcontact', [
'model' => $model,
]);
}
}
请注意,如果您将函数重命名为 actionAdvancedContact,那么您的路线需要 /site/advanced-contact
本人是学习Yii2框架的新手(装过Yii2进阶版)。 目前我有 "standart" 带有顶部菜单的前端(主页/关于/联系等)。我想在顶部菜单中添加附加部分(例如 "Advanced Contact" 显示高级联系表。
所以,我做了下一个:
已添加到 main.php 附加菜单部分
$menuItems = [
['label' => 'Home', 'url' => ['/site/index']],
['label' => 'About', 'url' => ['/site/about']],
['label' => 'Contact', 'url' => ['/site/contact']],
['label' => 'Advanced Contact', 'url' => ['/site/advancedcontact']]
];
已将 ContactPage 视图 (contact.php) 作为高级contact.php 复制到同一文件夹中。
但是在按下 link 之后我收到了消息
未找到 (#404) 无法解决请求:site/advancedcontact
我应该如何纠正这个错误?
你是不是也复制了controller里面的函数?在 frontend/controllers/SiteController.php 你应该有这样的东西。
/**
* Advanced Contact Form action
*
* Renders the advanced contact page and processes any form submissions.
*
* @return string Rendering result
*/
public function actionAdvancedcontact()
{
$model = new ContactForm();
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
} else {
Yii::$app->session->setFlash('error', 'There was an error sending email.');
}
return $this->refresh();
} else {
return $this->render('advancedcontact', [
'model' => $model,
]);
}
}
请注意,如果您将函数重命名为 actionAdvancedContact,那么您的路线需要 /site/advanced-contact