YII2 fieldConfig中的template中的{hint}设计不合理 [ 求助交流 ]
最近写网站用YII2进行开发,发现yii2 的fieldConfig中的template中的{hint},当表单错误的时候hint也会显示和error一样的错误信息,我的本意是让hint提示用户应该要填写什么内容,但是发生验证错误或者用户填写正确后,hint会被自动替换为erro或隐藏了。
本意是想让hint不管验证成功与否,都只显示原来设置的内容。
这个是代码片段
个人觉得hint本意是用于提示用户该输入什么内容信息,但是现阶段hint会在表单验证成功时隐藏,验证失败时显示和error一样,这个感觉和error功能有重叠,况且为什么要隐藏hint呢,用户也需要hint来辅助输入表单啊!
ps: 1、有些朋友说用placeholder,但是dropDownlist之类的组件怎么办 2、有人就会提到,自己加个label作为辅助文本不就行了,但是因为yii2代码生成模板出来的是处于另外一个DIV,无法将自己的label和模板的html代码处于同一行,而且本来就有模板(template)这么好用的东西。
建议:更正hint的显示问题,或者允许用户添加自定义的标签,自定义标签有助于开发者传递更多信息
例如{helpinfo}
'template' => "{label}\n{input}\n{error}{helpinfo}"
<?=$form->field($model,'name')->textInput()->helpinfo('请输入您常用的标签')?>
另外,如果能给fieldConfig中添加多个template,在$form->field可以指定使用哪个template就更好了,因为表单有些样式有重复的,但是不一样的模板,可以通过定制几个模板来指定使用哪一个。这个功能我没发现有,有知道的朋友麻烦给个例子,谢谢。
共 3 条回复
-
好吧,自己找到了答案。
原来,yii2引入的bootstrap中,会自动会给{hint}添加样式
<div class="hint-block"></div>
自动加入的样式会和模板中的这句话冲突
<span class="help-block">{hint}</span>
原模板
'template' => "{label}\n<div class=\"col-md-5\">{input}\n{error}</div><div class=\"col-md-4\"><span class=\"help-block\">{hint}</span></div>"
导致{hint}验证成功的时候会自动隐藏,验证失败的时候会和{error}显示一样的错误信息。
解决办法就是去掉包裹{hint}的span标签,如果有其他行级标签,最好也去除,块级标签可以保留
修改后的模板
'template' => "{label}\n<div class=\"col-md-5\">{input}\n{error}</div><div class=\"col-md-4\">{hint}</div>"
这个应该是一个BUG。。
最后,还是希望在ActiveForm::begin中多个template的功能,使用的时候可以指定使用哪个template,在每个field中设定template太蛋疼了。
wcy00q
最后登录:2017-02-13
在线时长:1小时42分
- 粉丝1
- 金钱35
- 威望0
- 积分45