如何在不使用cakephp3中的验证的情况下将错误消息注入实体?

时间:2017-05-18 09:26:42

标签: cakephp error-handling cakephp-3.x

我有一个模型,它会在beforeSave回调中检查很多东西。我不想为此目的使用cakephp验证系统,因为在这种情况下对我来说更简单。

如果检查链在某处失败,我返回false并且没有保存,这是正常的工作。我想在实体中回馈非正式错误消息,以便在控制器和/或视图中使用它。

我怎么能这样做? 例如:

public function beforeSave($event, $entity, $options)
{
    if($entity->isNew())
    {
        if(fail1) $entity->inserterrormessage('XYZ is missing');
        if(fail2) $entity->inserterrormessage('Please check if...');
    }
}

1 个答案:

答案 0 :(得分:2)

  

我怎么能这样做?

通过errors()方法,或CakePHP 3.4中的setError()setErrors()方法。

$entity->errors('propertyName', ['Message']);
$entity->setErrors(['propertyName' => ['Message']]);
$entity->setError('propertyName', ['Message']);

如果错误与实际实体属性无关,只需选择一个特殊名称,例如_generic。或者,在基本实体或特征中创建自定义通用错误存储功能。

另见