在Yii 2中自定义urlManager组件时获取错误无效调用 - yii \ base \ InvalidCallException

时间:2014-09-24 06:07:41

标签: php yii yii2 yii-components yii-url-manager

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

    urlManager' => [
            'class' => 'yii\web\UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
        ]
<{1>}下的

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

  

无效调用 - yii \ base \ InvalidCallException   设置只读属性:yii \ web \ Application :: urlManager&gt;

相同的components代码在高级应用程序中工作正常。有什么想法吗?

3 个答案:

答案 0 :(得分:5)

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

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

urlManager,以及security等其他几个组件被预定义为核心应用程序组件。最有可能的是,重新定义这些核心组件会导致意外行为(尽管我没有目击过)。

尝试删除配置中的密钥class

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

答案 1 :(得分:2)

以下是正确的配置。

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

答案 2 :(得分:0)

请使用此序列

'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'],
        ],