在 Yii 中使用表单构建器时,有什么方法可以更改验证 javascript 中的 inputID?
我的问题是我在一页上有两个相似的表单(使用一个表单构建器代码)。这是登录表单,使用了两次。首先,在模板中(显示在网站的每个页面上)和第二个 - 相同的表单,用于 /site/login 页面(此页面用于在访问限制等情况下重定向用户)。
这两个表单工作正常,但是 yii 为两个表单的元素生成具有相同 inputID 的验证 javascript,我不知道如何更改它。看一看:
<script type="text/javascript">
/*<![CDATA[*/
jQuery(function($) {
jQuery('a[rel="tooltip"]').tooltip();
jQuery('a[rel="popover"]').popover();
$('#loginForm').yiiactiveform({'attributes':[{'id':'LoginForm_email','inputID':'LoginForm_email','errorID':'LoginForm_email_em_','model':'LoginForm','name':'LoginForm[email]','enableAjaxValidation':true,'inputContainer':'div.control-group'},{'id':'LoginForm_password','inputID':'LoginForm_password','errorID':'LoginForm_password_em_','model':'LoginForm','name':'LoginForm[password]','enableAjaxValidation':true,'inputContainer':'div.control-group'},{'id':'LoginForm_rememberMe','inputID':'LoginForm_rememberMe','errorID':'LoginForm_rememberMe_em_','model':'LoginForm','name':'LoginForm[rememberMe]','enableAjaxValidation':true,'inputContainer':'div.control-group'}]});
$('#quickLoginForm').yiiactiveform({'attributes':[{'id':'LoginForm_email','inputID':'LoginForm_email','errorID':'LoginForm_email_em_','model':'LoginForm','name':'LoginForm[email]','enableAjaxValidation':true,'inputContainer':'div.control-group'},{'id':'LoginForm_password','inputID':'LoginForm_password','errorID':'LoginForm_password_em_','model':'LoginForm','name':'LoginForm[password]','enableAjaxValidation':true,'inputContainer':'div.control-group'},{'id':'LoginForm_rememberMe','inputID':'LoginForm_rememberMe','errorID':'LoginForm_rememberMe_em_','model':'LoginForm','name':'LoginForm[rememberMe]','enableAjaxValidation':true,'inputContainer':'div.control-group'}]});
jQuery('#collapse_0').collapse({'parent':false,'toggle':false});
});
/*]]>*/
</script>
这就是问题所在。我不明白,如何将其更改
'id':'LoginForm_email','inputID':'LoginForm_email',
为:
'id':'quickLoginForm_email','inputID':'quickLoginForm_email',
使验证适用于两种形式。我试图更改表单 ID、表单标题、元素 ID、元素名称 (ofc) 但没有结果。是否可以在不更改表单文件名等的情况下动态更改它?我试图阅读 CActiveForm 源代码,但没有找到输入 ID 的位置。
Ofc 可以不在 /site/login 页面上显示布局表单,但这不是我认为的最佳方式。