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

业务需求

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

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

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

解决方案

业务数据操作

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

  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
雨果虾滑猫 CSDN认证博客专家 PHP MySQL Python
CSDN博客专家。PHP/MYSQL/Elasticsearch,PMP项目管理 ,产品设计。6年服务端开发,2年产品,连续创业者,曾经参与区块链、新零售行业创业。Gitchat作者,曾在Gitcchat发布智能合约相关课程。
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值