Php 有没有办法改变Yii2创建ID';ActiveForm中的字段是什么?
我将ActiveForm与Yii2一起使用,默认情况下,如果未设置字段,它似乎会为字段生成默认的id,格式如下: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默认情况下是基于表单的模型名称和字段名称创建的 如果要为执行此操作的整个表单替代更改它,
{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的答案是正确的;我的解决方案只是另一种可能的实现方式