关于zii.widgets.CDetailView和zii.widgets.CListView [ 新手入门 ]
用gii生成一个model,然后用CRUD生成对应的controller和view,发现view里用zii.widgets.CDetailView和zii.widgets.CListView两个函数用于读取数据,这两个函数在framework/zii/widgets/下有定义,定义了相关的样式,默认是用<table>
标签显示内容。并且会自动在页头里加css文件,例如:
<link rel="stylesheet" type="text/css" href="/assets/809a85a7/detailview/styles.css" />
。
我的问题时,如何自定义显示内容的样式,难道我要修改zii.widgets.CDetailView这个函数吗?如果我有两个不同的model,里面的字段数不同,想要用于展示的样式也不同,调用
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
恐怕不行吧,如何实现呢?可不可以让title,create_time,author等这些字段以变量的形式让view文件使用,然后在view文件里自定义样式?
刚接触yii不久,对yii还不熟悉,望高手指点。
共 5 条回复
-
都可以自定义配置的。
例如:$this->widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'title', // title attribute (in plain text) 'owner.name', // an attribute of the related object "owner" 'description:html', // description attribute in HTML array( // related city displayed as a link 'label'=>'City', 'type'=>'raw', 'value'=>CHtml::link(CHtml::encode($model->city->name), array('city/view','id'=>$model->city->id)), ), ), ));
-
还有一点不能自定义,就是这里:
'itemCssClass'=>array( 'blog', ), 'itemTemplate'=>'<span class="{class}">{label}:{value}<br /></span>',
这样写的话,会把所有字段都加上blog这个css属性,包括id,title,author等等。如果我想这样,
<span class="id">id:1</span>
title:这是一篇博文<span>author:1</span>
这个itemTemplate怎样写?就是我想随心所欲的控制各个字段的展现方式,没有规律可循,怎样写一个统一的itemTemplate,能实现吗?谢谢。
-
'itemCssClass'=>array( 'blog', ),
这个就不要定义了。
如果想实现你说的,可以自定义一下attributes。$this->widget('zii.widgets.CDetailView', array( 'data' => $model, 'attributes' => array( array('label'=>'ID','name'=>'id','cssClass'=>'id'), array('label'=>'标题','name'=>'title','cssClass'=>'title'), array('label'=>'内容','name'=>'content','cssClass'=>'content'), ), 'itemTemplate'=>"<div class=\"{class}\"><span>{label}</span><span>{value}</span></div>\n", );
cuwangpu
注册时间:2012-09-10
最后登录:2017-06-11
在线时长:0小时30分
最后登录:2017-06-11
在线时长:0小时30分
- 粉丝0
- 金钱95
- 威望0
- 积分95