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

问题描述:

试图让我的头稍微复杂一些自定义CakePHP验证规则。CakePHP 3.x自定义验证,如果实体有关系

我有Posts了必须用City一些(大)城市都有SubCities相关。我的Posts表同时有city_idsub_city_id,所以在某些情况下,sub_city_id将为空。

我有一个很好的Ajax表单工作负载,并让你选择一个SubCity如果你第一次选择City有一些。我想编写一个验证规则,因此如果SubCitiescity_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']); 
    } 
]); 

↑这个例子是从书中截取。所以修改它以满足您的需求。回调内部提供了检查城市的逻辑。