4

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

4

2 回答 2

18

我找到了一个很好的解决方案。Html 助手有一个方法“getInputId”。我最初的问题尚未解决。如何使用activeField中的“getInputId”方法?

<?= Html::getInputId($model, 'phone'); ?>
于 2016-07-11T21:40:29.073 回答
3

默认情况下,他字段的 id 是$model-$attributeie

如果您使用的是User模型并username以 ie 的形式提交

<?= $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函数返回 $ this http://www.yiiframework.com/doc-2.0/yii-widgets-activefield.html#textInput()-detail

所以getInputIdhttp://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
 ?>

但是根据文档,这是受保护的方法,因此无法在类外调用

于 2016-07-12T04:05:55.043 回答