2017-04-07 70 views
1

我使用的ActiveForm與Yii2默認情況下它似乎產生默認ID的的領域,如果你不設置一個,格式爲:有沒有辦法改變Yii2爲ActiveForm中的字段創建ID的格式?

{action-name}-{field-name} 

因此,舉例來說,如果我有一個場與foo_baractionSettings的行動,那麼使用的name這一領域的ID將產生如下:

settings-foo_bar 

我寧願這只是foo_bar

這是可能通過表單的基礎上更改表單嗎?

回答

1

ActiveField id默認根據窗體的模型名稱和字段名稱創建。

如果你想改變它爲整個表單重寫the method,做它:

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

,並在您的形式使用該修改的類。

+0

非常好 - 再次感謝你! – Brett

2

根據@Bizley提供的answer,我正在調查該方法如何計算名稱,並發現還有另一種方法來實現此目的。

你可以簡單地覆蓋你相應的模型formName方法返回一個空值,如:

public function formName() { 
    return ''; 
} 

雖然這有較少的開銷,你並不需要創建一個新的類,它會也會影響您的表單中的其他內容,如字段名稱以及而不是可用於包含多個不同模型的表單,如解釋here所述。

最後,因爲這個問題是關於如何改變Yii 格式的ID,@Bizleys答案是正確的;我的解決方案只是另一種選擇可能實現它的另一種方式。

相關問題