При переходе на другую страницу, контроллер предыдущий страницы цепляется в новый 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'])

→ Ссылка