Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 修改模型属性赢得';在Yii';s CActiveRecord::beforeSave()_Php_Activerecord_Yii - Fatal编程技术网

Php 修改模型属性赢得';在Yii';s CActiveRecord::beforeSave()

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()方法上实现表单字段的HTML清理。但它不起作用。
例子:
公共函数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;
}