【Yii2】模型Model中使用rules规则定义场景setScenario限制规则

举报
小雨青年 发表于 2022/03/29 01:08:35 2022/03/29
【摘要】 业务需求 在我们的日常需求中,会有这种 数据表中存在图片字段,为必填,需要在操作过程中做到 创建数据时,图片字段必须 修改数据时,图片字段如果不传,就不修改 解决方案 业务数据操作 如...

业务需求

在我们的日常需求中,会有这种

数据表中存在图片字段,为必填,需要在操作过程中做到

  • 创建数据时,图片字段必须
  • 修改数据时,图片字段如果不传,就不修改

解决方案

业务数据操作

如果要保持原来的图片数据,那只要修改的时候带着原来的参数即可

  1. 加载表单时带原来的数据
  2. 图片数据放在隐藏的文本域中
  3. 提交表单时如果图片上传的字段没有值,就将原来的图片数据从隐藏文本域中拿出来

这样的操作当然能满足需求,但是太复杂了

定义场景setScenario

在Yii的数据操作中,一般的逻辑如下

  1. 判断是否有提交数据Yii::$app->request->post()
  2. 表单数据加载到模型model中 $model->load(Yii::$app->request->post())
  3. 保存model的数据 $model->save()

重点时第三步,在save的操作中,默认执行验证操作,判断提交的数据是否如何model中的规则

    /**
     * Saves the current record.
     *
     * This method will call [[insert()]] when [[isNewRecord
  
 
  • 1
  • 2
  • 3

文章来源: coderfix.blog.csdn.net,作者:小雨青年,版权归原作者所有,如需转载,请联系作者。

原文链接:coderfix.blog.csdn.net/article/details/106103771

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。