【问题标题】:Yii custom Widget, loader errorYii 自定义 Widget,加载器错误
【发布时间】:2011-11-18 02:28:00
【问题描述】:

请帮我解决这个问题(我在 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

在这里使用(“protected/views/layouts/main.php”):

 <?php
   $this->widget('/views/Magus');
 ?>

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

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

但如果小部件文件直接放在“protected\components”中,则不会发生错误。该错误的原因是什么以及如何纠正它?提前谢谢你!

【问题讨论】:

    标签: php class widget yii redeclare


    【解决方案1】:

    您使用了错误的路径。 我建议您将您的小部件 php 文件放入 protected/components/Magus.php 然后您可以从视图中调用它

    $this->widget('application.components.Magus');
    

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

    $this->widget('application.components.views.Magus');
    

    【讨论】:

    • 感谢您非常准确的回答乔纳坦!我知道(有点)定义加载路径的更复杂的方式,但仍然希望有一个不需要“application.components”部分的快捷方式。
    • 如果您通过主配置文件自动加载组件目录,您可能只使用类名和/或也可以使用setPathOfAlias,然后只使用别名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2016-02-17
    • 1970-01-01
    • 2017-06-02
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多