Yiiでフォームビルダーを使用しているときに検証javascriptでinputIDを変更する方法はありますか?
私の問題は、1 つのページに (1 つのフォーム ビルダー コードを使用して) 2 つの類似したフォームがあることです。これはログイン フォームで、2 回使用されます。1 つ目はテンプレート (Web サイトのすべてのページに表示) で、2 つ目は /site/login ページで使用される同じフォーム (このページは、アクセス制限などの場合にユーザーをリダイレクトするために使用されます)。
この 2 つのフォームは問題なく動作しますが、yii は 2 つのフォームの要素に対して同じ 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',
to:
'id':'quickLoginForm_email','inputID':'quickLoginForm_email',
2 つのフォームに対して検証を機能させるには。フォーム ID、フォーム タイトル、要素 ID、要素名 (ofc) を変更しようとしましたが、結果がありません。フォームファイル名などを変更せずに、動的に変更することはできますか? CActiveForm のソースを読み込もうとしましたが、inputID を取得する場所が見つかりませんでした。
多くの場合、/site/login ページにレイアウト フォームを表示しないことも可能ですが、それは私が考える最良の方法ではありません。