yii2 高级 2.06 createAbsoluteUrl

yii2 advanced 2.06 createAbsoluteUrl

我正在使用 urlManager 的 createAbsoluteUrl 方法来生成 URL 以通过消息 ID 查看我的消息模型的实例。

Yii::$app->urlManager->createAbsoluteUrl(['/message/view', 'id'=>$model->id, '#' => $model->id])

这会生成- http://localhost/advancedyii2/frontend/web/index.php?r=message#

但是,我需要- http://localhost/advancedyii2/frontend/web/index.php?r=message%2Fview&id=1

你能找出问题所在吗?

谢谢, pf

您需要为 url 编写规则: URL web.php

中的管理器规则配置
'components' => [
    'urlManager' => [               
        'showScriptName' => false,  // Disable index.php
        'enablePrettyUrl' => false, // Disable r= routes
        'enableStrictParsing' => true,
        'rules' => array(
                'mycategory/<controller:\w+>/<action:\w+>' => '<controller>/<action>',
                '<controller:\w+>/<id:\d+>' => '<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
                //Rules with Server Names
                'http://admin.domain.com/login' => 'admin/user/login',
                'http://www.domain.com/login' => 'site/login',
                'http://<country:\w+>.domain.com/profile' => 'user/view',
                '<controller:\w+>/<id:\d+>-<slug:[A-Za-z0-9 -_.]+>' => '<controller>/view',
            ),
    ],
],

您可以根据需要自定义 url。 More information