Php 有没有办法改变Yii2创建ID';ActiveForm中的字段是什么?

Php 有没有办法改变Yii2创建ID';ActiveForm中的字段是什么?,php,yii,yii2,Php,Yii,Yii2,我将ActiveForm与Yii2一起使用,默认情况下,如果未设置字段,它似乎会为字段生成默认的id,格式如下: {action-name}-{field-name} 因此,例如,如果在actionSettings的操作中使用了name为foo\u bar的字段,则该字段的id将生成为: settings-foo_bar 我更希望它是foo\u bar 是否可以逐个表单进行更改?ActiveFieldid默认情况下是基于表单的模型名称和字段名称创建的 如果要为执行此操作的整个表单替代更改它,

我将ActiveForm与Yii2一起使用,默认情况下,如果未设置字段,它似乎会为字段生成默认的id,格式如下:

{action-name}-{field-name}
因此,例如,如果在
actionSettings
的操作中使用了
name
foo\u bar
的字段,则该字段的id将生成为:

settings-foo_bar
我更希望它是
foo\u bar


是否可以逐个表单进行更改?

ActiveField
id
默认情况下是基于表单的模型名称和字段名称创建的

如果要为执行此操作的整个表单替代更改它,请执行以下操作:

protected function getInputId()
{
    return $this->_inputId ?: Html::getInputId($this->model, $this->attribute);
}

并在表单中使用此修改的类。

ActiveField
id
默认情况下是基于表单的模型名和字段名创建的

如果要为执行此操作的整个表单替代更改它,请执行以下操作:

protected function getInputId()
{
    return $this->_inputId ?: Html::getInputId($this->model, $this->attribute);
}
然后在表单中使用这个修改过的类。

基于@Bizley提供的方法,我正在研究该方法如何计算名称,并发现还有另一种方法可以实现这一点

您只需覆盖相应模型的
formName
方法即可返回空值,例如:

public function formName() {
    return '';
}
虽然这减少了开销,因为您不需要创建新类,但它也会影响表单中的其他内容,如字段名,并且也应用于包含多个不同模型的表单,如所述

最后,因为这个问题是关于改变Yii如何格式化id,@bizley的答案是正确的;我的解决方案只是另一种可能的实现方法。

基于@Bizley提供的方法,我正在研究该方法如何计算名称,并发现还有另一种实现方法

您只需覆盖相应模型的
formName
方法即可返回空值,例如:

public function formName() {
    return '';
}
虽然这减少了开销,因为您不需要创建新类,但它也会影响表单中的其他内容,如字段名,并且也应用于包含多个不同模型的表单,如所述

最后,因为这个问题是关于改变Yii如何格式化id,@bizley的答案是正确的;我的解决方案只是另一种可能的实现方式