1

我想在表单提交期间对数据保存在数据库中之前strip_tags调用的字段执行。description我想创建一个自定义规则并在那里做:

    'description' => array(

            'stripTags' =>array(
                    'rule' => array('StripTags'),
                    'message' => ''
            ),
    ),


public function StripTags($user = array()) {

        return !empty($user['description'])?strip_tags($user['description']):"";
    }

但是这不起作用,因为 cakephp 期望返回 true/false 而不是更新的值。我该怎么做?

4

1 回答 1

1

使用Model::beforeSave()回调,这是所有自动预保存数据修改逻辑应该去的。它在保存之前调用,但在验证之后。

未经测试的例子:

public function beforeSave($options = array())
{
    if(!parent::beforeSave($options))
    {
        return false;
    }

    if(!empty($this->data[$this->alias]['description']))
    {
        $this->data[$this->alias]['description'] = strip_tags($this->data[$this->alias]['description']);
    }

    return true;
}
于 2013-09-05T13:03:19.060 回答