Yii 中的自定义小部件

Posted

技术标签:

【中文标题】Yii 中的自定义小部件【英文标题】:Custom Widget in Yii 【发布时间】:2015-05-08 14:18:49 【问题描述】:

我像这样创建新的小部件:

class MyMenu extends CWidget

    public function init()
    

    
    
    public function run()
    
        $Items = array(
                    array('label'=>'Home', 'url'=>array('/site/index')),
                    array('label'=>'Add User', 'url'=>array('/user/register')),
                    array('label'=>'View Users', 'url'=>array('/user/index')),
                    array('label'=>'Login', 'url'=>array('/site/login'), 'visible'=>Yii::app()->user->isGuest),
                    array('label'=>'Logout ('.Yii::app()->user->name.')', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
                );
        $this->render('MyMenu', array('Items'=>$Items));
    

并查看此小部件

echo '<div id="Menu">';
$this->widget('zii.widgets.CMenu',array(
                'items' => $Items,
        ));
echo '</div>';

这是我的小部件文件的路径:

但我得到错误

MyMenu Widget 找不到视图“MyMenu”

我做错了什么?

【问题讨论】:

【参考方案1】:

您应该调用目录views 而不是view

源码显示:http://www.yiiframework.com/doc/api/1.1/CWidget#getViewPath-detail

【讨论】:

谢谢,顺便说一句。也许您会知道为什么我无法访问 MyMenu.css。我将扩展/小部件重命名为 etensions/MyMenu,并将 MyMenu.css 放入 assets 文件夹。在我制作的小部件视图文件中:$filename = Yii::app()-&gt;request-&gt;baseUrl.'/protected/extension/MyMenu/assets/MyMenu.css'; Yii::app()-&gt;getClientScript()-&gt;registerCssFile($filename); Core-view 显示:&lt;link rel="stylesheet" type="text/css" href="/Nauka/protected/extension/MyMenu/assets/MyMenu.css" /&gt; 但正如我所说,我无法访问此 css 文件(尝试在浏览器中显示此文件时出现错误 403) 我的错误,我需要替换 css 文件。它必须位于根目录下的资产文件夹中,而不是小部件文件夹中的新资产文件夹中!

以上是关于Yii 中的自定义小部件的主要内容,如果未能解决你的问题,请参考以下文章

使用 PyQt5 在 Qt Designer 中的自定义(升级)小部件中获取另一个小部件的当前值

Qt:QScrollArea 中的自定义小部件

Servicenow:表格中的自定义附件小部件未在提交时上传文档

树视图小部件中的自定义项目

PHP WordPress中的自定义小部件

如何将 QGraphicsView 提升为 .ui 文件中的自定义小部件?