При переходе на другую страницу, контроллер предыдущий страницы цепляется в новый url. С чем связано? Как исправить?
вообщем, сделал layout, шапку с ссылки на другие страницы сайта. При первом переходе всё нормально или если вернуться на главную,но если продолжить и перейти на ещё одну страницу, мы получим 404. Это происходит из-за того, что контроллер прошлой страницы цепляется к новому urlу.
пример
переходим впервые: адрес/веб/контроллер/экшен
переходим на другую страницу или кликаем на эту же:
адрес/веб/прошлый контроллер/контроллер/экшен
переходим на другую страницу или кликаем на эту же ещё раз:
адрес/веб/позапрошлый контроллер/прошлый контроллер/контроллер/экшен
Так до бесконечности или возврата на главную. Я даже не знаю как это правильно сформулировать, чтобы поисковая система меня правильно поняла.
layout:
<?php
/** @var yii\web\View $this */
/** @var string $content */
use app\assets\AppAsset;
use yii\helpers\Html;
use yii\helpers\Url;
AppAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>" class="h-100">
<head>
<meta charset="<?= Yii::$app->charset ?>">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<?php $this->registerCsrfMetaTags() ?>
<title><?= Html::encode($this->title) ?></title>
<?php $this->head() ?>
</head>
<body class="d-flex flex-column h-100">
<?php $this->beginBody() ?>
<header class="header">
<div class="container">
<div class="burger__menu">
<span></span>
</div>
<div class="logo">
<a href="<?=Url::home()?>"><?= Html::img('@web/img/orig_use.png', ['alt' => 'логотип']) ?></a>
</div>
<nav class="menu">
<ul>
<li class="header__menu">
<a href="<?=Url::to('about/about-view')?>">о нас</a>
</li>
<li class="header__menu">
<a href="<?=Url::to('games/games-view')?>">игры</a>
</li>
<li class="header__menu">
<a href="<?=Url::to('news/news-view')?>">новости</a>
</li>
<li class="header__menu">
<a href="<?=Url::to('jobs/jobs-view')?>">работа</a>
</li>
</ul>
</nav>
<div class="registration__and__themes">
<ul>
<li class="header__icons">
<button><?= Html::img('@web/img/translate_icon.svg', ['alt' => 'перевод сайта']) ?></button>
</li>
<li class="header__icons">
<button><?= Html::img('@web/img/swap_temes_icon.svg', ['alt' => 'смена темы сайта']) ?></button>
</li>
</ul>
</div>
</div>
</header>
<?= $content ?>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
Для примера один контроллер, они идентичны:
<?php
namespace app\controllers;
use yii\web\Controller;
?>
<?php
class GamesController extends Controller{
public function actionGamesView(){
return $this->render("games");
}
}
?>
Ответы (1 шт):
В Yii при создании ссылок надо помнить,что большинство GET параметров могут передаваться(прилипать) автоматически. В вашем случае думаю проблема в том,что вы передаете маршрут в виде строки Url::to('about/about-view') а для роутера это может быть проблемой. Можете попробовать передавать путь в виде массива и проблема должна пройти, как пример Url::to(['about/about-view'])