重复form的id问题

例如边框的登录框,和site/login的登录框同时出现的时候,用户名,密码id都是重复的。因为两个都是用的LoginForm的model。

你可以分两个,LoginForm1 LoginForm2

缺省情况下,自动生成的id是和name一样的。你可以在htmlOptions里显式指定id,或者把它设为false,禁止生成id。

因为对用户的输入有ajax的验证,所以不能禁用。指定id可以解决重复的问题,但是 CActiveForm::validate($model);生成的数据是不是也要修改。感觉用起来不是分方便了

CActiveForm::validate($model)不用改啊

但是你在外围判断是否调用CActiveForm::validate的地方要改。

哦 谢谢 我去测一下

恕我愚钝,还是没搞明白怎么设置。

比如默认情况下<?php echo $form->textField($model,‘username’?> ajax验证可以正常使用。

但是<?php echo $form->textField($model,‘username’,array(‘id’=>‘LoginForm_username2’)) ?> 这种情况下就不再响应了。

后来修改了<?php echo $form->error($model,‘username’,array(‘inputID’=>‘LoginForm_username2’)); ?>之后可以进行响应了。

但是用户名字段一直提示是合法的,即使用户名是空的。

查看ajax返回的还是{"LoginForm_username":["Username \u4e0d\u53ef\u4e3a\u7a7a\u767d."],"LoginForm_password":["Password \u4e0d\u53ef\u4e3a\u7a7a\u767d."]}

测试法发现如果ajax返回的是{"LoginForm_username2":["Username \u4e0d\u53ef\u4e3a\u7a7a\u767d."],"LoginForm_password":["Password \u4e0d\u53ef\u4e3a\u7a7a\u767d."]}就可以了。也就是ajax返回的数据里也应该是LoginForm_username2都对应起来才可以。而这个json就是CActiveForm::validate($model);生成的结果。在代码里面直接读取的$model->getErrors()。应该对应的是LoginForm里面的username属性,如果这个也要该可就很不方便了……

的确有这个问题。你能提交一个ticket么?谢谢。

当然可以,可是非常不好意思的是,我不知道去哪里提交……ticket提交的地址是?

:lol: 西瓜就是xigua对吧?最近有空研究Yii啊?

看Qiang的这篇帖子 http://www.yiiframework.com/forum/index.php?/topic/272-how-to-report-a-bug/

上面讲有如何提交一个ticket ::)

xigua自然是西瓜。呵呵最近加班少了:) 谢谢

!-_- 无比蹩脚的英语,提交的辛苦。。干脆用了中文,最后用英文大体说了点,也不知道说清楚没