CakePHP3:条件付きでallowEmptyにしたい場合

パスワードの入力欄と確認欄は「パスワードを変更しない場合は空欄でよい」というケースがあると思います。 これはallowEmptyにコールバック関数を指定することで実現可能です:

$validator
    ->allowEmpty('confirm_password', function ($context) {
        return empty($context['data']['password']);
});

上記の例では「パスワード欄が空の場合は、パスワード確認欄も空で良い」というバリデーションになります。

ソース:

バリデーション - 3.x