Yii 视图与布局

Layout Widgets

CPortlet -- 用于边栏(sidebar)显示一个模块

<?php $this->beginWidget('zii.widgets.CPortlet'); ?>
    ...insert content here...
<?php $this->endWidget(); ?>

e.g., 在 column 中放入 CMenu

$this->beginWidget('zii.widgets.CPortlet', array(
    'title'=>'Operations',
));
$this->widget('zii.widgets.CMenu', array(
    'items'=>$this->menu,
    'htmlOptions'=>array('class'=>'operations'),
));
$this->endWidget();

然后在单个的视图文件中定义 menu 属性,即可动态地创建菜单部件

$this->menu=array(
	array('label'=>'Create', 'url'=>array('create')),
	array('label'=>'Manage', 'url'=>array('admin')),
);

CPortlet 用法

<?php
    $this->widget('Classification', array(
        'title'=>'<h3>Categories</h3>', // title 部分可以输入 HTML
        'type'=>'category',
        'htmlOptions'=>array('class'=>'panel panel-default'),
        'decorationCssClass'=>'panel-heading',
        'contentCssClass'=>'block-content widget',
    ));
?>

创建 Custom Portlet

在 protected/components/CustomPorlet.php 文件中创建 CustomPortlet 类

<?php
Yii::import('zii.widgets.CPortlet');
 
class CustomPorlet extends CPortlet
{
    public $property;
    ...
    //输出内容
    protected function renderContent()
    {
        ...
    }	
}

使用 Custom Portlet

在 protected/views/layouts/column2.php 中加入代码

<div id="sidebar">
    <?php $this->widget('CustomPortlet', $property); ?>
</div>