CakePHP自定义验证与错误消息中的变量

下午好.

我有一个名为“百分比”字段的模型.所有类似的模型不能将它们的百分比加起来超过100%.在验证期间处理检查.

我需要验证错误消息来说明用户剩余的“房间”百分比.例如,如果所有MyModel已经总共有80%并且用户尝试创建一个百分比为40%的新MyModel,则错误消息会显示“您的百分比太高.您只剩下20%.”

问题是我不知道如何将变量放在验证错误消息中.

在MyModel.PHP中:

public $validate = array(
    'percentage' => array(
        'rule' => array('confirmValidPercentage','percentage'),'message' => 'foo','required' => true,),);

public function confirmValidPercentage($data) {
    $percentage = floatval($data['percentage']);

    $total = 0.00;
    $weights = $this->find('all',array('recursive'=>-1));
    foreach ($weights as $weight) {
        $total += floatval($weight[$this->name]['percentage']);
    }

    if ($total + $percentage > 100) {
        // handle the error variable here
        return false;
    }
    else {
        return true;
    }
}

我试过了 :

$this->validate['percentage']['message'] = 'You have '.(100-$total).'% remaining';

但此处设置的消息元素不会覆盖原始消息 – 错误消息仍为“foo”.我尝试从$validation数组中删除消息元素,但它认为父名称,即’percentage’.我试过了:

unset($this->validate['percentage']['message']);

在设置验证消息之前,但结果是相同的.

有谁知道如何在验证错误消息中返回变量?非常感谢.

这其实很简单.只返回错误字符串!
return 'You have ' . ...;

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...