覆盖yii2中的核心规则

时间:2016-11-08 08:15:43

标签: yii2 yii2-advanced-app yii2-basic-app

我想覆盖yii2中数字的核心规则,将波斯数转换为英文数字,​​然后验证它们? 这些代码用于在PHP中将波斯数转换为英文数字

function convert($string) {
    $persian = array('۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹');
    $num = range(0, 9);
    return str_replace($persian, $num, $string);
}

如何在验证之前应用这些代码进行转换?我不想在我的模型中使用beforeValidate 我写了一个组件,但我不知道应该改变什么功能和位置?

1 个答案:

答案 0 :(得分:1)

在模型中添加filter规则。

public function rules()
{
    return [
        ['pers_number', 'filter', 'filter' => function ($value) {
            return str_replace(
                ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'], 
                range(0, 9),
                $value
            );
        }],
    ];
}