删除cakepp中表单提交字段中的标签


Remove tags in field on form submit in cakephp

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

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

public function StripTags($user = array()) {
        return !empty($user['description'])?strip_tags($user['description']):"";
    }

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

使用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;
}