PHP

修改Yii的CheckBox

微信扫一扫,分享到朋友圈

修改Yii的CheckBox
收藏 0 0

对于不同的主题,对checkbox的样式要求是不一样的。

比如我想要一个下面的样式

我想要的样式

可以当我使用默认的代码调用的时候,它竟然是这样的

<?=$form->field($model,'rememberMe')->checkbox()?>
默认的样式

这样肯定是不行的。

如果我根据默认的样式给它添加一个class

<?=$form->field($model,'rememberMe')->checkbox(['class'=>['custom-control-input']])?>
增加了class之后

竟然没有了,肯定是样式的问题,所以这样也是不可以的。

那么给他添加一个`$enclosedByLabel`的属性

添加$enclosedByLabel之后

现在看起来靠谱一些了,但是我们要的是checkbox在前面。

所以我们再改变一下template

    <?= $form->field($model, 'rememberMe', ['template' => '{input}{label}'])->checkbox([
                    'class' => 'custom-control-input',
                ], false) ?>
通过修改template使input和label调整顺序

这时候虽然已经很接近了,但是还有一个问题,那就是label不对。label无法添加自定义的class,即使我们添加了labelOptions也不可以。

查看源码发现

如果我们默认$enclosedByLabel等于true的时候,会把labelOptionsclass置为null,这样肯定是不行。

如果我们的$enclosedByLabelfalse,也是行不通的,可以看到这里,虽然把$options['labelOptions']给了`labelOptions`,但是并没有用啊,所以也不行。

唯一的办法就是label了,它支持HTML,所以只能在这里下手了(看最后一句,如果你设置了这个值,那么options就是null,那么这个labelOptions存在的意义是什么呢)

所以最后我们的代码是

   <?= $form->field($model, 'rememberMe', ['template' => '{input}{label}'])->checkbox([
                    'class' => 'custom-control-input',
                    'label' => '<label class="custom-control-label" for="loginform-rememberme">记住我</label>',
                ], false) ?>
锦城虽云乐,不如早还家。

解决ResponseBodyAdvice统一返回报`cannot be cast to java.lang.String`的问题

上一篇

Google Fonts本地化

下一篇

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片