當您使用Yii2的驗證規則的模型內,例如:在Yii2驗證規則中傳遞多維數組?
[['foo','bar'], 'integer],
顯然['foo','bar']
是一個數組,我知道你可以使用。
但可以做到通過一個多維數組是這樣的:
$this->numbers = [1,2,3];
[['foo','bar','numbers'], 'integer]
威爾Yii2接受這一點,並檢查正確的數據還是會測試值,因爲numbers
是一個數組返回一個錯誤?
當您使用Yii2的驗證規則的模型內,例如:在Yii2驗證規則中傳遞多維數組?
[['foo','bar'], 'integer],
顯然['foo','bar']
是一個數組,我知道你可以使用。
但可以做到通過一個多維數組是這樣的:
$this->numbers = [1,2,3];
[['foo','bar','numbers'], 'integer]
威爾Yii2接受這一點,並檢查正確的數據還是會測試值,因爲numbers
是一個數組返回一個錯誤?
你需要合併陣列工作規則
[ArrayHelper::merge(['foo','bar'], $this->getNumberFields()), 'integer']
更新:
使用each
規則。見EachValidator。
public function rules()
{
return [
['numbers', 'each', 'rule' => ['integer']],
]
}
也許[這](http://stackoverflow.com/a/30300977/57091)會幫助你,如果你想創建具有一定的允許值驗證。你的意思是foo和bar可能只有價值1,2或3? – robsch
或者數字應該是整數數組?是的,如果這些屬性是「正常」整數,需要與foo和bar分開定義。 – robsch
@robsch是的,第二個。我已經將他們轉移到使用'each'驗證器。 – Brett