ActiveField inputOptions id и checkbox

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
panda
Сообщения: 11
Зарегистрирован: 2017.07.18, 16:16

ActiveField inputOptions id и checkbox

Сообщение panda » 2018.02.06, 10:43

Вывожу чекбокс:

Код: Выделить всё

$form = \yii\widgets\ActiveForm::begin([
                        'id' => 'site-login-form', ...])
                        
$form->field($model, 'rememberMe', [
   'template' => '{input}',
   'options' => [
      'tag'=>false
   ],
   'inputOptions' => [
      'id' => $form->getId() . '-rememberme'
   ],
])
->checkbox(['class' => 'custom-control-input'],false)
->label(false)
Получаю

Код: Выделить всё

<input name="LoginForm[rememberMe]" value="0" type="hidden">
<input id="loginform-rememberme" class="custom-control-input" name="LoginForm[rememberMe]" value="1" checked="" type="checkbox">
В текстовых инпутах чуть выше айди формы точно таким же способом подставляется корректно

Код: Выделить всё

<input id="site-login-form-password" class="form-control" name="LoginForm[password]" placeholder="введите пароль" required="required" type="password">
Почему это не работает с чекбоксом? Возможно ли сделать так, чтобы работало?

Nex-Otaku
Сообщения: 809
Зарегистрирован: 2016.07.09, 21:07

Re: ActiveField inputOptions id и checkbox

Сообщение Nex-Otaku » 2018.02.06, 15:06

Что не работает? Что куда подставляется? Ничего не понятно.

Давайте так.

1. Что вам нужно.
2. Что делаете.
3. Что ожидаете получить.
4. Что получаете.

panda
Сообщения: 11
Зарегистрирован: 2017.07.18, 16:16

Re: ActiveField inputOptions id и checkbox

Сообщение panda » 2018.02.07, 10:44

При выводе чекбокса игнорируется

Код: Выделить всё

'inputOptions' => [
      'id' => $form->getId() . '-rememberme'
   ],
Все равно подставляется название класса формы, хотя я ожидаю, что будет подставлен id формы. указанный при ее инициализации. Для текстовых инпутов тот же синтаксис отрабатывает корректно.

Код: Выделить всё

<input id="loginform-rememberme" type="checkbox">
vs

Код: Выделить всё

<input id="site-login-form-password" type="password">

Nex-Otaku
Сообщения: 809
Зарегистрирован: 2016.07.09, 21:07

Re: ActiveField inputOptions id и checkbox

Сообщение Nex-Otaku » 2018.02.07, 18:38

Код: Выделить всё

->checkbox(['class' => 'custom-control-input', 'id' => $form->getId() . '-rememberme'], false)

panda
Сообщения: 11
Зарегистрирован: 2017.07.18, 16:16

Re: ActiveField inputOptions id и checkbox

Сообщение panda » 2018.02.14, 17:03

Так работает, да.

Но для текстовых полей id из fieldOptions использовалось для связывания label'a с полем.
Впрочем, по итогам испытаний выяснилось, что чекбоксу нельзя задать и "внешний" label
Вроде такого:

Код: Выделить всё

<label for="checkbox_id">text</label><checkbox id="checkbox_id">
только оберточный:

Код: Выделить всё

<label>text<checkbox id="checkbox_id"></label>
Видимо это "не баг, а фича". Так что просто опускаю руки и смиряюсь с не очень предсказуемым разнообразием поведения activefields

Ответить