我在 Yii 中有四个模型。汽车、RaceCar、LuxuryCar 和司机。
RaceCar 有_一个司机
LuxuryCar 有_一个司机
RaceCar 和 LuxuryCar 都继承自同一模型 - Car - 使用相同的表继承。
LuxuryCar 和 RaceCar 中都有一个“fuel_level”属性,它改变了 Driver 中的验证规则(如果 RaceCar.fuel_level 为零,Driver 不应该将属性“action”设置为“driving”)。
而不是必须添加与 Driver 的所有可能的“属于”关系(我可能会添加更多继承的 Car 模型),然后检查 Driver 当前属于哪种 Car,以便我可以加载模型再次从数据库中,我希望能够验证父级(例如 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!'));
}
}
关于php - 在 Yii 中验证相关模型的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12854779/