murenhui
- murenhui 2019-01-24 已签到连续签到2天,获得了10个金钱
- murenhui 2019-01-23 已签到连续签到1天,获得了5个金钱
- murenhui 2019-01-10 已签到连续签到1天,获得了5个金钱
- murenhui 2019-01-08 已签到连续签到1天,获得了5个金钱
- murenhui 赞了回答
自己堵自己的路嘛你这是。
继承就是原封不动的拿来,子类不写 rules 方法。
所以 rules 是啥还是啥,继承多少代都是如此,规则永不变!name 就是required
。
纯继承想解决问题,是一定不行的。所以,你想“不重写 rules,而是通过继承的方法“之外,还需要其它方面做些改动,那就是:
必须在规则验证前赋值 name,让它符合required
规则就行,这个思路你看可以吗?
那么如何在之前赋值呢?先说说你的beforeSave()
吧:
你把子类的name在beforeSave
里赋值,这个是可以的。但是,时机不对。因为validate()
是在beforeSave()
之前验证的,那时子类的 name 还是为空哦。
那咋办?
换时机啊,在beforeValidate()
不就可以了嘛。
Yii2 的 AR 模型体系里,从赋值到入库留了好多事件,这些事件就是你注入自定义代码的机会。
看看哪个是你可以用的。 - murenhui 2019-01-04 已签到连续签到3天,获得了15个金钱
- murenhui 2019-01-03 已签到连续签到2天,获得了10个金钱
- murenhui 2018-12-31 已签到连续签到4天,获得了20个金钱
- murenhui 2018-12-30 已签到连续签到3天,获得了15个金钱
- murenhui 2019-01-02 已签到连续签到1天,获得了5个金钱