Mik
Mik

Reputation: 385

Yii2: yii\web\UrlManager does'nt make user-friendly urls

Here's urlManager configs:

return [
    'class'               => \yii\web\UrlManager::class,
    'enablePrettyUrl'     => true,
    'showScriptName'      => false,
    'baseUrl'             => '',
    'rules'               => [
        'page/<id:[\\w-_]+>' => 'page/index',
    ],
];

Here's urlManager using:

$menuItems = [
    [
        'label' => 'Home',
        'url' => Yii::$app->urlManager->createAbsoluteUrl(['/page']),
    ],
    [
        'label' => 'About',
        'url' => Yii::$app->urlManager->createAbsoluteUrl(['/page', 'id' => 'about']),
    ],
    [
        'label' => 'Contact',
        'url' => Yii::$app->urlManager->createAbsoluteUrl(['/page', 'id' => 'contact']),
    ],
];

And here's results from browser:

http://localhost/page?id=about

http://localhost/page?id=contact

What's wrong in my code?

Upvotes: 0

Views: 30

Answers (1)

rob006
rob006

Reputation: 22144

You need to use exact route when creating URLs:

$menuItems = [
    [
        'label' => 'Home',
        'url' => Yii::$app->urlManager->createAbsoluteUrl(['/page']),
    ],
    [
        'label' => 'About',
        'url' => Yii::$app->urlManager->createAbsoluteUrl(['/page/index', 'id' => 'about']),
    ],
    [
        'label' => 'Contact',
        'url' => Yii::$app->urlManager->createAbsoluteUrl(['/page/index', 'id' => 'contact']),
    ],
];

Upvotes: 1

Related Questions