yii2 脏属性问题
我的需求是记录修改表单时改变的内容,马上就想到了用脏属性
$model->getDirtyAttributes(),然而属性内容一样,但属性数据类型不一样的,也一并带出来了
$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。
然后按照这样写了还是莫有效果噻。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
文档说的没错,$model->save()会顺带执行 $model->validate()