【问题标题】:CakePHP custom validation with a variable in the error message错误消息中带有变量的 CakePHP 自定义验证
【发布时间】:2012-08-17 23:48:15
【问题描述】:

下午好。

我有一个模型,它有一个名为“百分比”的字段。所有相似模型的百分比加起来不能超过 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 数组中完全删除消息元素,但它默认为父名称,即“百分比”。我试过了:

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

在设置验证消息之前但结果是一样的。

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

【问题讨论】:

    标签: php validation cakephp cakephp-2.1


    【解决方案1】:

    其实很简单。只返回错误字符串!

    return 'You have ' . ...;
    

    【讨论】:

    • 完美!我认为自定义验证方法只能返回一个布尔值。谢谢。
    • 直到最近我也这么认为;)
    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多