CakePHP 3.x自定义验证,如果实体有关系
问题描述:
试图让我的头稍微复杂一些自定义CakePHP验证规则。CakePHP 3.x自定义验证,如果实体有关系
我有Posts
了必须用City
一些(大)城市都有SubCities
相关。我的Posts
表同时有city_id
和sub_city_id
,所以在某些情况下,sub_city_id
将为空。
我有一个很好的Ajax表单工作负载,并让你选择一个SubCity
如果你第一次选择City
有一些。我想编写一个验证规则,因此如果SubCities
在city_id
字段中可用,则不能有sub_city_id
为空。
任何帮助最好的方式去做这件事?
答
您是否试图检查手册?阅读关于Conditional validation
定义验证规则时,可以使用on键来定义何时应该应用验证规则。如果未定义,则将始终应用该规则。其他有效的值是创建和更新。使用这些值之一将使该规则适用于仅创建或更新操作。
此外,还可以提供一个可调用的函数,将确定特定规则是否应该被应用于:
$validator->add('picture', 'file', [
'rule' => ['mimeType', ['image/jpeg', 'image/png']],
'on' => function ($context) {
return !empty($context['data']['show_profile_picture']);
}
]);
↑这个例子是从书中截取。所以修改它以满足您的需求。回调内部提供了检查城市的逻辑。