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

o3imoua4  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(43)

我有一个模型,它在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...');
    }
}

字符串

rqcrx0a6

rqcrx0a61#

我该怎么做?
通过errors()方法,或者从CakePHP 3.4开始使用setError()setErrors()方法。

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

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

*Cookbook > Database Access & ORM > Entities > Validation Errors
*API > \Cake\DataSource\DataTrait::errors()
*API > \Cake\DataSource\CaketTrait::setError()
*API > \Cake\DataSource\DataTrait::setErrors()

相关问题