# 记一次踩坑记录 | Yii2 在保存数据时，会先验证rules规则然后再走beforeSave方法

**URL:** https://www.shiqidu.com/t/topic/487
**Category:** 开发调优
**Tags:** Yii
**Created:** [2018 年9 月 5 日 17:45 UTC](https://www.shiqidu.com/t/topic/487 "2018-09-05T17:45:47Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### 作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)
#### 发布日期： [2018 年9 月 5 日 17:45 UTC](https://www.shiqidu.com/t/topic/487/1 "2018-09-05T17:45:47Z")

</div>

我的`rules`里限制`description`最大长度为 **300** ，但是我在保存入库的并没有截取`description`，而是选择在`beforeSave`方法里统一截取。

本来想着能省点事，不用每次入库的时候截取。然而在保存的会先验证`rules`的规则，然后才是`beforeSave`。

保存数据的时候的流程图

![Xnip2018-09-06_01-43-29.jpg](https://discourse.shiqidu.com/upload/discussion/20180906/259f32ffebb1967dd70f90276e274fbf_origin.jpg)

官方说明

![Xnip2018-09-06_01-36-15.jpg](https://discourse.shiqidu.com/upload/discussion/20180906/43586a86621027e340c4146d151d177c_origin.jpg)

搞技术不可不求甚解，多看官方代码还是有好处的。

---

<div class="post-metadata">

### 作者： ![Eureka](https://www.shiqidu.com/user_avatar/www.shiqidu.com/eureka/32/5_2.png) [@Eureka](https://www.shiqidu.com/u/Eureka)
#### 发布日期： [2019 年9 月 30 日 06:54 UTC](https://www.shiqidu.com/t/topic/487/2 "2019-09-30T06:54:10Z")

</div>

同一个坑栽了两次，我特么也是服了自己了。
