wcy00q 2016-11-15 16:16:47 4586次浏览 3条回复 3 3 0

最近写网站用YII2进行开发,发现yii2 的fieldConfig中的template中的{hint},当表单错误的时候hint也会显示和error一样的错误信息,我的本意是让hint提示用户应该要填写什么内容,但是发生验证错误或者用户填写正确后,hint会被自动替换为erro或隐藏了。 1.png

2.png

3.png

本意是想让hint不管验证成功与否,都只显示原来设置的内容。

这个是代码片段 4.png

个人觉得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就更好了,因为表单有些样式有重复的,但是不一样的模板,可以通过定制几个模板来指定使用哪一个。这个功能我没发现有,有知道的朋友麻烦给个例子,谢谢。

觉得很赞
亿速云
  • 回复于 2016-11-18 11:57 举报

    好吧,自己找到了答案。

    原来,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太蛋疼了。

  • 回复于 2017-03-21 21:32 举报

    表示也遇到同样大问题,太他妈的蛋疼了,我得该回去了。但是我的问题不是你的這个问题,我的问题是field字段不能实用template模板,超级蛋疼,好麻烦啊,

    1 条回复
    回复于 2017-04-15 14:12 回复

    请问一下,field可以单端设定模板吗,我现在的ActiveForm无论怎么改,textinput的字体大小都改不了,太烦人了。

  • 回复于 2019-12-31 16:39 举报

    可以单独指定的:
    echo $form->field($model, 'demo', ['inputTemplate' => '']);

    觉得很赞
您需要登录后才可以回复。登录 | 立即注册