Php 修改模型属性赢得';在Yii';s CActiveRecord::beforeSave()
我正在模型的beforeSave()方法上实现表单字段的HTML清理。但它不起作用。Php 修改模型属性赢得';在Yii';s CActiveRecord::beforeSave(),php,activerecord,yii,Php,Activerecord,Yii,我正在模型的beforeSave()方法上实现表单字段的HTML清理。但它不起作用。 例子: 公共函数beforeSave() { $this->anAttribute='somevalue'; 变量转储($this->anAttribute); } somevalue实际上是输出的,但它永远不会到达数据库,因此在beforeSave()和save()之间,值丢失,保存的是原始表单字段值。使用afterValidate()而不是beforeSave()如何?您必须更改行 public funct
例子:
公共函数beforeSave()
{
$this->anAttribute='somevalue';
变量转储($this->anAttribute);
}
somevalue实际上是输出的,但它永远不会到达数据库,因此在beforeSave()和save()之间,值丢失,保存的是原始表单字段值。使用afterValidate()而不是beforeSave()如何?您必须更改行
public function beforeSave()
{
$this->anAttribute = 'somevalue';
return true;
}
不要使用afterValidate()来存储值,值在保存前会得到更新。它会产生一些问题是的,实际上有一个模型没有验证,用户可以在任何字段中输入他们想要的任何内容,不包括任何内容,但输入仍需经过消毒以删除HTML,因此XSS。谢谢!就这样。还必须调用parent::beforeSave()
public function beforeSave()
{
$this->anAttribute = 'somevalue';
return true;
}