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()->request->baseUrl.'/protected/extension/MyMenu/assets/MyMenu.css'; Yii::app()->getClientScript()->registerCssFile($filename);
Core-view 显示:<link rel="stylesheet" type="text/css" href="/Nauka/protected/extension/MyMenu/assets/MyMenu.css" />
但正如我所说,我无法访问此 css 文件(尝试在浏览器中显示此文件时出现错误 403)
我的错误,我需要替换 css 文件。它必须位于根目录下的资产文件夹中,而不是小部件文件夹中的新资产文件夹中!以上是关于Yii 中的自定义小部件的主要内容,如果未能解决你的问题,请参考以下文章
使用 PyQt5 在 Qt Designer 中的自定义(升级)小部件中获取另一个小部件的当前值