我想在表单提交期间将数据保存到数据库中之前,对名为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;
}