在 Yii 2 中自定义 urlManager 组件时收到错误无效调用 – yiiaseInvalidCall


Getting error Invalid Call – yiiaseInvalidCallException when customizing urlManager component in Yii 2

我已经设置了 Yii 2 基本应用程序,在我使用config/web.php下:

    urlManager' => [
            'class' => 'yii'web'UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        ]

components.

但是当我尝试运行我的应用程序时,出现以下错误:

无效调用 – yii''base''InvalidCallException 设置只读属性:yii''web''Application::urlManager>

不过,相同的urlManager代码在高级应用程序中运行良好。知道为什么吗?

Invalid Call – yii'base'InvalidCallException Setting read-only property: yii'web'Application::urlManager>

从此错误消息来看,您似乎正在尝试在应用程序组件中重新定义urlManager这是不允许的。

urlManager 和其他几个组件(如 security(预定义为核心应用程序组件。最有可能的是,重新定义这些核心组件会导致意外行为(尽管我没有目睹任何行为(。

尝试删除配置中的密钥class

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
    ]

以下是正确的配置。

'components' => [
    'urlManager' => [
        //'class' => 'yii'web'UrlManager',
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules'=>[
        ],
    ],
],

请使用此序列

'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [
                    'class' => 'yii'log'FileTarget',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
        'mailer'=>[
        'class'=>'yii'swiftmailer'Mailer',
        'useFileTransport'=> false,
        ],
        'authManager'=>
        [
            'class'=>'yii'rbac'DbManager',
            'defaultRoles'=> ['guest'],
        ],