我在Yii有四个模特.汽车,赛车,豪华汽车和司机.
RaceCar has_one Driver
LuxuryCar has_one Driver
RaceCar和LuxuryCar都继承了相同的模型 - Car - 使用相同的表继承.
LuxuryCar和RaceCar中都有一个"fuel_level"属性,用于更改Driver中的验证规则(如果RaceCar.fuel_level为零,则Driver不能将属性"action"设置为"driving").
而不是必须添加每个可能的"属于"关系驱动程序(我可能会添加更多继承的汽车模型),然后检查以查看驱动程序当前属于哪种汽车,以便我可以从数据库加载模型再次,我希望能够验证父级中Driver的属性值(例如RaceCar).
这可能吗?如果是这样,怎么样?如果没有,是否有更好的方式让我失踪?
一种解决方案是简单地driver为您的汽车属性添加自定义(例如内联)验证规则:
public function rules() {
return array('driver', 'validateDriver');
}
public function validateDriver() {
if (!$this->driver->isFoo) {
$this->addError('driver', Yii::t('validation', '{attribute} is not foo!'));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2455 次 |
| 最近记录: |