我正在使用CakePHP 2.6.3。
我对同一个模型有多个关联,我想根据它的关联应用一些稍微不同的beforeValidate()逻辑。我认为模型$this->alias
会更新为关联的别名,但它似乎只是类名。
使用食谱中的Multiple Relations to Same Model示例,如何判断发件人(用户模型)或收件人(用户模型)是否正在验证?
function beforeValidate($options = array()) {
if ($association == 'Sender') {
// do something
} else {
// do something different
}
}
答案 0 :(得分:1)
当通过关联使用模型时,$ alias属性仅使用与原始模型名称不同的名称。别名应始终在模型本身中使用。例如$this->Blog->Author
用户模型的别名是“作者”,假设如下:
$belongsTo = ['Author' => ['className' => 'User']];
因此,要么通过验证的一方保存数据,要么只是将标识符与数据一起传递。
if ($this->data[$this->alias]['is_sender'] == true) { /*...*/ } else { /*...*/ }
在你的beforeValidate()。
中如果它不是发件人那么它就是接收者。