2
根據Yii2文檔,可以將驗證規則應用於隱式屬性(表字段)或用戶定義的屬性。Yii2:如何動態地將驗證規則添加到模型類中?
有沒有辦法爲動態添加到模型類的屬性創建驗證規則?
例如:
要有一個名爲「過濾器」模型類,並命名爲「類別」另一個模型類 - 類別,如筆記本電腦,掌上電腦,臺式機等。我可能需要使用觸控板區域作爲一個過濾器以筆記本類別和對角線長度作爲過濾器到掌上類別之一等等。因此,在任何情況下,過濾條件都會根據我選擇的類別而有所不同,我可能希望將其添加到模型類Filter並動態驗證,如果通過發佈加載成功。
沒有人說'rules()'函數應該被編碼爲一個固定數組,根據許多條件來組裝它是完全可能的。如果你還想要前端驗證,它只會咬你,這是困難的。 – Blizz
問題是如果我沒有爲動態添加的屬性聲明我的規則(),模型類字段沒有被填充。例如$ model-> load(yii - > $ app0-> request-> post())不會加載$ model變量,因爲load()調用setAttributes(),然後調用validate()方法,這會失敗,因爲沒有爲動態添加的屬性聲明規則。 –
啊但這不一定是相關的規則。 'load'&'setAttributes'默認只接受'safe'屬性。你也可以簡單地重寫['safeAttributes()'](http://www.yiiframework.com/doc-2.0/yii-base-model.html#safeAttributes()-detail),而與驗證無關。 – Blizz