脏属性问题 [ 2.0 版本 ]
我的需求是记录修改表单时改变的内容
$model = $this->findModel($id);
//这里$model的各属性数据类型都正常
if ($model->load(Yii::$app->request->post())) {
//这里load之后$model的数值型属性值被改成了字符串型
文档看了一通,要做 数据预处理 ,文档中的示例代码是这样
下面的代码示例展示了对用户输入的完整处理, 这将确保只将整数值存储在一个属性中:
['age', 'trim'], ['age', 'default', 'value' => null], ['age', 'integer', 'integerOnly' => true, 'min' => 0], ['age', 'filter', 'filter' => 'intval', 'skipOnEmpty' => true],
以上代码将对输入执行以下操作:
1.从输入值中去除前后空白。
2.确保空输入在数据库中存储为 null;我们区分 未设置 值和实际值为 0 之间的区别。 如果值不允许为 null,则可以在此处设置另一个默认值。
3.如果该值不为空,则验证该值是否为大于0的整数。大多数验证器的 $skipOnEmpty 属性都被设置为true。
4.确保该值为整数类型,例如将字符串 '42' 转换为整数 42。在这里,我们将 $skipOnEmpty 设置为 true,默认情况下,在 filter 验证器里这个属性是 false。4.确保该值为整数类型,例如将字符串 '42' 转换为整数 42。在这里,我们将 $skipOnEmpty 设置为 true,默认情况下,在 filter 验证器里这个属性是 false。
然后按照这样写了还是效果。
其他 1 个回答
搞搞的传奇
注册时间:2015-02-24
最后登录:2020-06-04
在线时长:24小时46分
最后登录:2020-06-04
在线时长:24小时46分
- 粉丝8
- 金钱5
- 威望10
- 积分345