2014-09-24 55 views
3

定製urlManager組件時,我已經設置了Yii的2個基本的應用程序和config/web.php下使用:得到錯誤無效呼叫 - 警予基地 InvalidCallException Yii中2

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

但是當我嘗試運行我的申請,我得到以下錯誤:

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

urlManager代碼在高級應用精細雖然。任何想法爲什麼?

+0

做工精細\ yiisoft \ yii2 \網絡\ UrlManager.php – 2014-09-24 11:28:15

+0

是你作曲家更新? 我已經這樣做了 'urlManager'=> [ 'enablePrettyUrl'=>真, 'showScriptName'=>假, ], – Kshitiz 2014-09-24 11:52:18

+0

沒有作曲家更新。只要改變在UrlManager.php – 2014-09-24 12:44:01

回答

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

從這個錯誤信息,它看起來像您正嘗試在這是不允許應用程序組件重新定義urlManager

urlManager,和幾個其它組分如security預定義爲核心應用程序組件。最可能的是,重新定義這些核心組件會導致意外的行爲(雖然我還沒有看到任何)。

嘗試在配置中刪除鍵class

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

以下是正確的配置。

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

兩個變量這看起來像死無葬身之地答案的重複。因此,作爲一個獨立的答案,它不會增加太多價值。也許作爲維克多答案的編輯? – 2015-07-15 08:03:41

+0

我也來回答,但不正確,於是我決心並共享的配置。如果你知道yii配置,你知道這是兩個不同的答案。 – sunrain 2015-07-16 09:16:42

0

當我改變的變量值enablePrettyUrl =真實showScriptName =在供應商的虛假請使用序列

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