Yii自定义Widget,加载程序错误

Seb*_*ian 1 php class widget yii redeclare

请帮我解决这个问题(我在Windows localhost上使用Yii,Xampp):

所以......我在"protected\components\views\Magus.php"中创建了一个新的小部件.

 <?php
   class Magus extends CWidget {

   //////////////////////////////
  public function run()
  {
    echo '<p style="color:blue; ">Trallala :) !</p>'; // do something.
  }
    //////////////////////////////

 } //end class
Run Code Online (Sandbox Code Playgroud)

它在这里使用("protected/views/layouts/main.php"):

 <?php
   $this->widget('/views/Magus');
 ?>
Run Code Online (Sandbox Code Playgroud)

这会导致加载程序(?)错误:

Fatal error: include() [<a href='function.include'>function.include</a>]: 
Cannot redeclare class magus in C:\xampp\htdocs\yii\framework\YiiBase.php on line 421
Run Code Online (Sandbox Code Playgroud)

但是如果窗口小部件文件直接放在"protected\components"中,则不会发生错误.该错误的原因是什么以及如何纠正?先感谢您 !

Joh*_*tan 5

你使用错误的路径.我建议你把你的widget文件放入protected/components/Magus.php,然后你可以从视图中调用它

$this->widget('application.components.Magus');
Run Code Online (Sandbox Code Playgroud)

或者你可以将它保存在你拥有它的文件夹中并像这样调用它:

$this->widget('application.components.views.Magus');
Run Code Online (Sandbox Code Playgroud)