Я строю проект с YII2 (сайт знакомств). У меня есть несколько «форм-моделей», я имею в виду модели, которые используются для создания форм с активной формой. В некоторых формах/моделях у меня одинаковые поля, например поля «пол» и «местоположение», присутствующие на странице «регистрация» и на странице «профиль». Только некоторые поля идентичны, другие разные, поэтому я не могу использовать одну и ту же модель для разных страниц/форм.YII2: идентичные элементы в разных формах активной формы и их идентификаторы
Проблема в том, что при использовании разных моделей для создания форм activerecord идентификаторы и классы CSS для полей также различаются.
Например, у меня есть модель под названием «RegistrationForm» и модель «EditProfileForm». С учетом (шаблон) у меня есть такой код
<?php $form = ActiveForm::begin(['id' => 'form']); ?>
<?= $form->field($model, 'test_field') ?>
<?php ActiveForm::end(); ?>
Если я выполнить этот код для различных моделей я получить различные поля имен (ID): «editprofileform-test_field» ID для модели и «EditProfileForm» Идентификатор «signupform-test_field» для модели «RegistrationForm».
Почему он измеряет? Потому что я хочу применить те же стили CSS и обработчики JavaScript для идентичных элементов. Есть ли способ сделать идентификаторы и классы CSS одинаковыми для активных форм, сгенерированных с использованием разных моделей?
EDITED
Одно решения (опубликовано @marche), это добавить параметр ID в текстовое поле
<?php $form = ActiveForm::begin(['id' => 'form']); ?>
<?= $form->field($model, 'test_field')->textInput([
'class' => 'some-css-class',
'id' => 'my-id',
]) ?>
<?php ActiveForm::end(); ?>
Он работает для текстовых входов, но я также Autocomplete виджета
<?= $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 для виджета AutoComplete.
Благодарим за ответ. Он работает для текстового поля, но я не могу заставить его работать для полей виджета AutoComplete. См. Отредактированный вопрос – user2265529
Отредактированный мой ответ. – marche