如何为activeForm中的字段添加id前缀?

How to add id preix for field in activeForm?

我有两个表单拥有相同的模型属性,因为 Yii2 生成字段 id 为 ModelName-fieldName 所以生成的字段将如下所示:

<select name="Channel[channel]" class="form-control" id="channel-description">

我曾尝试在 Activeform 中使用 fieldConfig,但它不会将 id 添加到字段本身。

你应该简单地使用 ActiveForm::field() 的第三个参数:

$options : The additional configurations for the field object.

例如:

$form->field($model, 'channel', ['inputOptions' => ['id' => 'channel-description']])

详细了解 ActiveForm::field()

但是如果你真的想为所有字段 ID 添加前缀,你应该重写 ActiveForm.

如果你想保存输入id结构“{model}-{attribute}”。

使用 yii\helpers\Html::getInputId() 生成“{model}-{attribute}”输入 ID 并使用您的自定义前缀完成它。

$form->field($model, 'name')->textInput(['id' => 'custom-' . Html::getInputId($model, 'name')])

如果您为输入元素设置自定义 id,您可能需要相应地调整 [[$selectors]]。

<?= $form->field($searchModel, 'regId',[
            'selectors' => ['input' => '#company-vacancy-regId'],
            'inputOptions' => ['id' => 'company-vacancy-regId'],
        ])->widget()?>