我有一個需要兩個字段中的一個非空的模型。任何一個都可以是空的,只要另一個不是。我被困在最好的方式來做到這一點。CakePHP 3:如何使用驗證強制兩個字段中的任意一個不爲空
我可以防止空條目是這樣的:
$validator
->notEmpty('my_field', 'a or b must be non-empty', [$this, 'checkIfAorBisEmpty']);
第三個參數是有條件的功能,對於規則返回true
只有在其他領域也爲空予以強制執行。但是,這只是阻止這樣的事情:
$this->Table->newEntity(['a'=>'', 'b'=>'', 'c'='foobar']);`
我想也防範這樣的事情:
$this->Table->newEntity(['c'=>'foobar']);`
上面的代碼將不防止這一點,因爲如果密鑰完全省略保存的數據,然後他們沒有效果。我不能使用requirePresence
,因爲根據文檔,不像notEmpty,它不支持條件函數。
顯然,應用程序buidRules()
不限於相同的方式,但它們不在newEntity()
上運行。
這樣做的正確方法是什麼?