YII2 (데이트 사이트) 프로젝트를 구축 중입니다. 나는 여러 가지 "폼 모델"을 가지고 있는데, 나는 액티브 폼으로 폼을 만드는 데 사용되는 모델을 의미합니다. 일부 양식/모델에는 동일한 필드가 있습니다 (예 : "성별"및 "위치"필드는 "등록"페이지와 "프로필"페이지에 있음). 일부 필드 만 동일하며 다른 필드는 서로 다르므로 다른 페이지/양식에 대해 동일한 모델을 사용할 수 없습니다.YII2 : 다른 활성 폼과 ID로 동일한 요소
이제는 activerecord 양식을 만드는 데 다른 모델을 사용할 때 필드의 ID와 CSS 클래스도 다릅니다.
예를 들어 'SignupForm'이라는 모델과 'EditProfileForm'이라는 모델이 있습니다. 내가 다른 모델에이 코드를 실행 내가 다른 필드 이름 (ID를) 얻을 경우보기 (템플릿)에서 그
<?php $form = ActiveForm::begin(['id' => 'form']); ?>
<?= $form->field($model, 'test_field') ?>
<?php ActiveForm::end(); ?>
같은 코드를 가지고 : "editprofileform-test_field"ID "를 EditProfileForm"모델 및 에 대한 "signupform-test_field" "SignupForm"모델의 ID입니다.
왜 그것이 metter입니까? 왜냐하면 동일한 요소에 동일한 CSS 스타일과 JavaScript 핸들러를 적용하기를 원하기 때문입니다. 다른 모델을 사용하여 생성 된 activeforms에 대해 ID와 CSS 클래스를 동일하게 만드는 방법이 있습니까?
편집을 할
하나의 솔루션으로 텍스트 필드에 ID 매개 변수를 추가하는 것입니다 (@marche에 의해 게시)
<?php $form = ActiveForm::begin(['id' => 'form']); ?>
<?= $form->field($model, 'test_field')->textInput([
'class' => 'some-css-class',
'id' => 'my-id',
]) ?>
<?php ActiveForm::end(); ?>
그것은 텍스트 입력을 위해 작동하지만 나는 또한 자동 완성 위젯을
<?= $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