CakePHP(v3.x) 、他のフィールドの結果に応じてValidationをかける。

10月になって消費税が増税されましたが、8%と10%が混在してValidationがややこしそうです。

今回はis_eatinというフィールドがtrueである場合にconsumption_taxというフィールドがpriceというフィールドに対して10%以内に収まっているかどうかを検証するValidationを書いていきたいと思います。

ItemsTable.phpなど任意の場所にvalidatorを追記していきます。


$validator ->add( 'consumption_tax', 'custom', [ 'rule' => function ($value, $context){ return $value == $context["data"]["price"] * 0.10; // 消費税10%検証 }, 'on' => function ($contex) { return $contex["data"]["is_eatin"]; // ここの条件が真である時に上のRuleが適応される }, 'message' => __('消費税の金額が正しいかを確認してください'), ] );

ここで、$contest[“data”][“他のフィールド名”]で他のフィールドの値にアクセスすることができます。