dsf12313
2017-11-08 04:24
浏览 45
已采纳

我想问一下Yii2高级模板中的自定义小部件

I have created a custom widget on my yii2 advanced project

I create new dir name components in backend dir after that, I create new dir again in components dir name views

in backend/components I create new PHP file name SideBWidget.php

<?php
namespace backend\components;

use yii\base\Widget;
use yii\helpers\Html;
use common\models\Content;

class SideBWidget extends Widget{

    public function run(){

        $models = Content::findAll([
            'c_pkey'=>0,
        ]);

        $this->render('sideb',[
            'model' => $models
        ]);
    }
}
?>

in backend/components/views I create sideb.php

<div id="sidebar-nav" class="sidebar">
        <div class="sidebar-scroll">
            <nav>
                <ul class="nav">
                    <?php foreach($model as $row): ?>
                      <li><a href="#" class=""><i class="lnr lnr-alarm"></i> <span><?php echo $row->c_name; ?></span></a></li>
                    <?php endforeach; ?>
                </ul>
            </nav>
        </div>
    </div>

and I call the widget in views/layout/main.php like this, and I also use the widget path use backend\components\SideBWidget;

<?= SideBWidget::widget() ?>

but when I run there is nothing and no error message. Where is the problem?

图片转代码服务由CSDN问答提供 功能建议

我在yii2高级项目上创建了一个自定义小部件

我创建 后端dir中的新目录名称组件之后,我在组件目录名称视图中再次创建新目录

在后端/组件中创建新的PHP文件名SideBWidget.php \ n

 &lt;?php 
namespace backend \ components; 
 
use yii \ base \ Widget; 
use yii \ helpers \ Html; 
use common \ models \ Content; 
 
class SideBWidget  extends Widget {
 
公共函数run(){
 
 $ models = Content :: findAll([
'c_pkey'=&gt; 0,
]); 
 
 $ this-&gt; 渲染('sideb',[
'model'=&gt; $ models 
]); 
} 
} 
?&gt; 
   
 
 

在backend / components / views我创建sideb.php

 &lt; div id =“sidebar-nav”class =“sidebar”&gt; 
&lt; div class =“  sidebar-scroll“&gt; 
&lt; nav&gt; 
&lt; ul class =”nav“&gt; 
&lt;?php foreach($ model as $ row):?&gt; 
  &lt; li&gt;&lt; a href =“#”class =“”&gt;&lt; i class =“lnr lnr-alarm”&gt;&lt; / i&gt;  &lt; span&gt;&lt;?php echo $ row-&gt; c_name;  ?&gt;&lt; / span&gt;&lt; / a&gt;&lt; / li&gt; 
&lt;?php endforeach;  ?&gt; 
&lt; / ul&gt; 
&lt; / nav&gt; 
&lt; / div&gt; 
&lt; / div&gt; 
   
 
 

和我 像这样在views / layout / main.php中调用widget,我也使用widget path use backend \ components \ SideBWidget;

 &lt;?= SideBWidget ::  widget()?&gt; 
   
 
 

但是当我运行时,什么都没有,也没有错误信息。 问题出在哪里?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • duanjiaren8188 2017-11-08 05:39
    已采纳

    You must add return statement in run() function of widget:

    return $this->render('sideb',[
        'model' => $models
    ]);
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题