2014-12-15 11:38:58 20064次浏览 2条回答 6 悬赏 1 金钱

用Gii直接生成的视图文件里:

<?= DetailView::widget([
    'model' => $model,
    'attributes' => [
        'uid',
        ['label'=>'gender','value'=>$model->getGenderText()],
    ],
]) ?>

这里面输出的HTML怎么自定义或修改样式?

补充于 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;
补充于 2014-12-15 17:03

同理,其它HTML元素也可以类似自定义风格样式,比如CheckBox:

public static function activeCheckbox($model, $attribute, $options = [])

其中的$options也这样自定义即可

补充于 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为:

Uid1
genderFemale

最佳答案

  • 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
见习主管

sunboy2544 北京

注册时间:2014-12-15
最后登录:2017-12-16
在线时长:4小时13分
  • 粉丝2
  • 金钱40
  • 威望20
  • 积分280

热门问题