首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蛋糕PHP验证,更改传入的$data

蛋糕PHP验证,更改传入的$data
EN

Stack Overflow用户
提问于 2013-04-06 05:57:41
回答 1查看 446关注 0票数 0

我的蛋糕验证有问题。例如,用户在表单字段中输入“20欧元”,而我只想获得数字"20“并去掉欧元符号。但是验证方法只允许检查某些东西是否是它应该是的。

我即将在我的规则集中创建一个函数,但我正在努力进一步,因为该函数在蛋糕上下文中返回的不是true就是false,而不是我需要的修改后的变量……

代码语言:javascript
复制
'rule-3' => array(
    'rule'    => 'checkEuro',
    'message' => 'don´t need one because it should be a conversion only :-('
)

public function checkEuro($data) {
    $data = str_replace('€','',$data);
    return preg_replace('/[^0-9]/','', html_entity_decode($data));
}

希望你能帮上忙。提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-06 06:15:47

如果您只需要将金额本身存储在数据库中,而不是欧元符号,那么您应该在验证之前去掉欧元符号。

您可以在模型的beforeValidate()回调中执行此操作;

代码语言:javascript
复制
public function beforeValidate(array $options = array())
{
    if (!empty($this->data[$this->alias]['FIELDNAME']) {
        // Strip the euro-sign
        // NOTE: should also take plain, non-entity € into account here?
        $this->data[$this->alias]['FIELDNAME'] = str_replace(
            '€', '', $this->data[$this->alias]['FIELDNAME']
        );
    }

    return parent::beforeValidate($options);
}

(当然,将FIELDNAME替换为实际的字段名)

剥离货币符号后,使用decimalnumeric验证规则验证值

注意如果您确实想存储包含货币符号的值,请使用核心money验证规则。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15844300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档