Yii2. Форма получает входной идентификатор

Я пытаюсь получить идентификатор поля, чтобы использовать его в js. Я прочитал документацию Yii2 и обнаружил, что в ActiveField есть метод «getInputId», но как мне его вызвать?

<?php $form = ActiveForm::begin(); ?>
        <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
<?php $form->end(); ?>

Я могу сохранить результат из $form->field в var, но это строка, поэтому использовать ее таким образом невозможно.

Я проверял код ActiveForm и вижу, что существует 2 метода: beginField и endField, может быть, что-то с этим делать? любые идеи будут оценены.


person Eduardo    schedule 11.07.2016    source источник


Ответы (2)


По умолчанию идентификатор поля равен $model-$attribute, т.е.

если вы используете модель User и username в форме, т.е.

<?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>

Идентификатор будет user-username

Вы также можете указать идентификатор вручную для поля, т.е.

<?= $form->field($model, 'username')->textInput(['maxlength' => true, 'id' => 'my_id']) ?>

в этом случае идентификатор для ввода будет my_id

Изменить в соответствии с последним комментарием: (я не пробовал, но объяснил согласно документации)

поскольку функция textInput возвращает $this http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#textInput()-detail

Итак, getInputId (http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#getInputId()-detail) должен вызываться как

<?php
 $form->field($model, 'username')->textInput(['maxlength' => true])->getInputId(); // this will not work
 ?>

НО это защищенный метод в соответствии с документацией, поэтому он не будет доступен для вызова вне класса

person Chetan Sharma    schedule 12.07.2016

Я нашел хорошее решение. Существует метод «getInputId» из помощника Html. Мой первоначальный вопрос еще не рассмотрен. Как использовать метод «getInputId» из activeField?

<?= Html::getInputId($model, 'phone'); ?>
person Eduardo    schedule 11.07.2016