在 DetailView 中如何自定义为自己想要的样式? [ 2.0 版本 ]
用Gii直接生成的视图文件里:
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'uid',
['label'=>'gender','value'=>$model->getGenderText()],
],
]) ?>
这里面输出的HTML怎么自定义或修改样式?
sunboy2544 补充于 2014-12-15 16:51
研究了一下Yii2.0源码,找到了答案,给大家分享如下:
DetailView可以自由定义样式
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'uid',
['label'=>'gender','value'=>$model->getGenderText()],
],
'template' => '<tr><th>{label}</th><td>{value}</td></tr>',
'options' => ['class' => 'table table-striped table-bordered detail-view'],
]) ?>
输出后的HTML为:
<table class="table table-striped table-bordered detail-view"><tr><th>Uid</th><td>1</td></tr><tr><th>gender</th><td>Female</td></tr></table>
其它具体参数,可以参考【yii\widgets\DetailView】
public $attributes;
/**
* @var string|callable the template used to render a single attribute. If a string, the token `{label}`
* and `{value}` will be replaced with the label and the value of the corresponding attribute.
* If a callback (e.g. an anonymous function), the signature must be as follows:
*
* ~~~
* function ($attribute, $index, $widget)
* ~~~
*
* where `$attribute` refer to the specification of the attribute being rendered, `$index` is the zero-based
* index of the attribute in the [[attributes]] array, and `$widget` refers to this widget instance.
*/
public $template = "<tr><th>{label}</th><td>{value}</td></tr>";
/**
* @var array the HTML attributes for the container tag of this widget. The "tag" option specifies
* what container tag should be used. It defaults to "table" if not set.
* @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
*/
public $options = ['class' => 'table table-striped table-bordered detail-view'];
/**
* @var array|Formatter the formatter used to format model attribute values into displayable texts.
* This can be either an instance of [[Formatter]] or an configuration array for creating the [[Formatter]]
* instance. If this property is not set, the "formatter" application component will be used.
*/
public $formatter;
sunboy2544 补充于 2014-12-15 17:03
同理,其它HTML元素也可以类似自定义风格样式,比如CheckBox:
public static function activeCheckbox($model, $attribute, $options = [])
其中的$options也这样自定义即可
sunboy2544 补充于 2014-12-15 17:13
$options可以自由定义,比如:
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'uid',
['label'=>'gender','value'=>$model->getGenderText()],
],
'template' => '<tr><th>{label}</th><td>{value}</td></tr>',
'options' => ['class1' => 'table table-striped table-bordered detail-view'],
]) ?>
定义为class1,输出的HTML为:
Uid | 1 |
---|---|
gender | Female |
最佳答案
-
sunboy2544 发布于 2014-12-15 16:51 举报
研究了一下Yii2.0源码,找到了答案,给大家分享如下:
DetailView可以自由定义样式<?= DetailView::widget([ 'model' => $model, 'attributes' => [ 'uid', ['label'=>'gender','value'=>$model->getGenderText()], ], 'template' => '<tr><th>{label}</th><td>{value}</td></tr>', 'options' => ['class' => 'table table-striped table-bordered detail-view'], ]) ?>
输出后的HTML为:
<table class="table table-striped table-bordered detail-view"><tr><th>Uid</th><td>1</td></tr><tr><th>gender</th><td>Female</td></tr></table>
其它具体参数,可以参考【yii\widgets\DetailView】
public $attributes; /** * @var string|callable the template used to render a single attribute. If a string, the token `{label}` * and `{value}` will be replaced with the label and the value of the corresponding attribute. * If a callback (e.g. an anonymous function), the signature must be as follows: * * ~~~ * function ($attribute, $index, $widget) * ~~~ * * where `$attribute` refer to the specification of the attribute being rendered, `$index` is the zero-based * index of the attribute in the [[attributes]] array, and `$widget` refers to this widget instance. */ public $template = "<tr><th>{label}</th><td>{value}</td></tr>"; /** * @var array the HTML attributes for the container tag of this widget. The "tag" option specifies * what container tag should be used. It defaults to "table" if not set. * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered. */ public $options = ['class' => 'table table-striped table-bordered detail-view']; /** * @var array|Formatter the formatter used to format model attribute values into displayable texts. * This can be either an instance of [[Formatter]] or an configuration array for creating the [[Formatter]] * instance. If this property is not set, the "formatter" application component will be used. */ public $formatter;
其他 1 个回答
sunboy2544 北京
注册时间:2014-12-15
最后登录:2017-12-16
在线时长:4小时13分
最后登录:2017-12-16
在线时长:4小时13分
- 粉丝2
- 金钱40
- 威望20
- 积分280