$ model-> validate()返回true而没有任何属性赋值?

时间:2014-03-28 09:37:49

标签: yii

我有一个包含许多属性的模型,我想在保存之前进行验证。所以在某些情况下我只会进行模型初始化但没有属性赋值

$model=new patient();   $model->validate();

但它返回true,我有许多属性设置为必需。我不明白这是怎么发生的?

有没有办法在保存模型之前验证模型,即使没有为模型分配属性?

2 个答案:

答案 0 :(得分:1)

您有验证规则,但您可能会错过有关验证的方案。

通过此

检查当前对象模型上的验证器
print_r($model->validatorList);

参考此link

答案 1 :(得分:0)

您可以在创建模型后随时验证模型。

让我们看一下事件的顺序: -

您已创建了一个模型类:

class User extends CActiveRecord
{
  ... 
}

这为患者类创建了一个模板,该模板继承自CActiveRecord,这意味着它具有继承的可用功能。因此,虽然您的类文件不是activate()函数,但它从CActiveRecord类继承它。

现在您创建一个类

的实例
$patient1 = new patient;

这意味着患者1现在存在一些内存空间。它有价值。有些可能是空的而有些则不是(例如,它们可能有默认值)。

所以,在任何时候,你都可以

$model->validate();

这会更改模型以包含错误消息。要获得已经提出的错误,请使用

$allErrors = $model->getErrors()
print_r($all_errors); // This will show you the structure.

要以简洁的方式打印错误,请使用

echo CHtml::errorSummary($model);