私はYII2(出会い系サイト)でプロジェクトをビルドしています。私はいくつかの "フォームモデル"を持っています、私はアクティブフォームを使用してフォームを作成するために使用されるモデルを意味します。いくつかのフォーム/モデルでは、「登録」ページと「プロファイル」ページに「ジェンダー」と「ロケーション」フィールドなどの同じフィールドがあります。いくつかのフィールドだけが同一であり、他のフィールドは異なるので、異なるページ/フォームに同じモデルを使用することはできません。YII2:異なるアクティブフォームとそのIDの同一要素
ここで問題は、アクティブレコードフォームを作成するために異なるモデルを使用すると、フィールドのIDとCSSクラスも異なることです。
たとえば、「SignupForm」というモデルと「EditProfileForm」というモデルがあります。 「EditProfileForm」モデル と ため 「editprofileform-test_field」ID:私は別のフィールド名(ID)を取得するさまざまなモデルのために、このコードを実行した場合ビュー(テンプレート)で、私はその
<?php $form = ActiveForm::begin(['id' => 'form']); ?>
<?= $form->field($model, 'test_field') ?>
<?php ActiveForm::end(); ?>
のようなコードを持っています"signupform"モデルの "signupform-test_field" ID。
なぜそれがmetterですか?私は同じ要素に同じCSSスタイルとJavaScriptハンドラを適用したいからです。異なるモデルを使用して生成されたアクティブフォームに対してIDとCSSクラスを同じにする方法はありますか? (@marcheによって投稿)
EDITED
一つの解決策は、テキストフィールド
<?php $form = ActiveForm::begin(['id' => 'form']); ?>
<?= $form->field($model, 'test_field')->textInput([
'class' => 'some-css-class',
'id' => 'my-id',
]) ?>
<?php ActiveForm::end(); ?>
にIDパラメータを追加することです。これは、テキスト入力のために動作しますが、私はまた、オートコンプリートウィジェットを持って
<?= $form->field($model, 'city')->widget(\yii\jui\AutoComplete::classname(), [
'clientOptions' =>[
'source' => new JsExpression("function(request, response) {
$.getJSON('/my-script?country='+country_id, {
term: request.term
}, response);
}
")
],
],['id'=>'my-test-id']) ?>
あなたが見たように私はオートコンプリートにIDパラメータを追加しようとしたが動作しません。オートコンプリートウィジェットにIDパラメータを割り当てる方法を教えてください。
ありがとうございました。それはテキストフィールドのために働くが、私はAutoCompleteウィジェットフィールドのために働かせることはできません。編集された質問 – user2265529
を編集してください。 – marche