Yii2。表单获取输入 ID

Yii2. Form get Input Id

我正在尝试获取字段的 ID,以便在 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,也许与此有关?任何想法将不胜感激。

我找到了一个很好的解决方案。 Html helper 中有一个方法 "getInputId"。 我原来的问题尚未解决。如何使用 activeField 中的 "getInputId" 方法?

<?= Html::getInputId($model, 'phone'); ?>

默认情况下,他字段的 ID 是 $model-$attribute

如果您使用 User 模型并且 username

的形式提交
<?= $form->field($model, 'username')->textInput(['maxlength' => true]) ?>

ID 将是 user-username

您也可以手动为字段指定 ID,即

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

在这种情况下,输入的 ID 将为 my_id

根据最新评论编辑:(我没有尝试过,但根据文档进行了解释)

因为textInput函数是return$thishttp://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
 ?>

但根据文档,这是受保护的方法,因此无法在 class

外部调用