CakePHP 3.如果实体有关系,X自定义验证


CakePHP 3.x custom validation if entity has relation

尝试了解一些稍微复杂的自定义CakePHP验证规则。

我有Posts,必须与City相关联一些(较大的)城市有SubCities。我的Posts表有city_idsub_city_id,所以在某些情况下,sub_city_id将为Null。

我有一个很好的ajax表单工作,加载,让你选择一个SubCity,如果你已经选择了一个City,有一些。我想写一个验证规则,所以如果SubCitiescity_id字段上可用,你就不能有Null的sub_city_id

有什么最好的方法吗?

您是否尝试查看手册?阅读条件验证

在定义验证规则时,您可以使用on键来定义何时应用验证规则。如果未定义,则将始终应用该规则。其他有效值是create和update。使用这些值之一将使规则仅适用于创建或更新操作。

另外,您可以提供一个可调用的函数,该函数将决定是否应该应用特定的规则:

$validator->add('picture', 'file', [
    'rule' => ['mimeType', ['image/jpeg', 'image/png']],
    'on' => function ($context) {
        return !empty($context['data']['show_profile_picture']);
    }
]);

↑这个例子摘自这本书。因此根据您的需要修改它。在回调函数中放入检查城市的逻辑。