Yii2 — как проложить маршрут к странице

Я новичок в обучающей среде Yii2 (установлена ​​расширенная версия Yii2).
В настоящее время у меня есть «стандартный» интерфейс с верхним меню (Главная / О нас / Контакты и т. Д.). Я хотел бы добавить в верхнем меню дополнительный раздел (например, «Расширенный контакт», который отображает расширенную контактную форму).

Итак, я сделал следующее:

Добавлен дополнительный раздел меню 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) как advancedcontact.php в той же папке.

Но после нажатия на ссылку я получаю сообщение

Не найден (# 404)
Невозможно разрешить запрос: site / advancedcontact

Что я должен следовать, чтобы исправить эту ошибку?

0

Решение

Вы также скопировали функцию в контроллер? в 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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]