Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii $model->;validate()返回true而不指定任何属性?_Yii - Fatal编程技术网

Yii $model->;validate()返回true而不指定任何属性?

Yii $model->;validate()返回true而不指定任何属性?,yii,Yii,我有一个具有许多属性的模型,我想在保存它之前进行验证。因此,在某些情况下,我只能进行模型初始化,而没有属性赋值 $model=new patient(); $model->validate(); 但它返回true,我将许多属性设置为required。我不明白这是怎么发生的 是否有一种方法可以在保存模型之前验证模型,即使没有为模型指定属性?您可以在模型创建后随时验证模型 让我们看一下事件的顺序:- 您已经创建了一个模型类: class User extends CActiveRecor

我有一个具有许多属性的模型,我想在保存它之前进行验证。因此,在某些情况下,我只能进行模型初始化,而没有属性赋值

$model=new patient();   $model->validate();
但它返回true,我将许多属性设置为required。我不明白这是怎么发生的


是否有一种方法可以在保存模型之前验证模型,即使没有为模型指定属性?

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

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

您已经创建了一个模型类:

class User extends CActiveRecord
{
  ... 
}
这将为patient类创建一个模板,该模板继承自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);

您有验证规则,但可能会错过验证时的场景

通过以下方法检查当前对象模型上的验证器

print_r($model->validatorList);

参考此

只需回显或打印您的模型或模型属性,并检查是否分配了任何默认值。哎呀!一个错误也是一个好的学习。初始化时我错过了场景。谢谢Saravankg。我试过了,尽管他们都没有初始化,但结果仍然是真的。现在我包括了这个场景,现在一切都好了。