0

我是 Yii 框架的新手,对模型内部编写的验证规则有些困惑。例如:
array('email','safe'),
array('username, password', 'required', 'on'=>'login, register'),

1-安全验证器的用途是什么以及在哪里使用它?
2-场景中有什么用以及如何使用它?假设我已经写了 'on'=>'register',那么 'register' 是动作名称还是其他任何东西。

即使经过大量的文件,我仍然不是很清楚。有人可以举个例子来解释一下。

4

2 回答 2

5

安全验证器的用途是什么以及在哪里使用它?

safe验证器可用于指示“此字段可以接受任何内容,并且不应执行验证”。它在批量分配期间是相关的:

$model->attributes = $_POST['Model'];

如果该字段没有设置规则,则在此分配后其值将不会更新。如果一个字段不需要任何验证,但在这种情况下仍应更新,您可以使用safe规则来指示这一点(但要小心,验证是一件好事)。


在场景中有什么用途以及如何使用它?假设我写了'on'=>'register',那么'register' 是动作名称还是其他任何东西。

在这种情况下,register是一个场景(您选择的任意字符串,描述模型正在发生的事情)。在执行批量分配和其他工作之前,您可以在控制器中分配模型的场景。当验证模型时,Yii 将查看模型的scenario属性并基于该属性运行验证器。(在一个合理大小的项目中,您将希望使用类常量而不是任意字符串来保持一致性。)

示例:用户密码更改。您可以设置以下验证器以password仅在这种情况下将字段标记为必填,否则不能:

// validator in the model class
array('password', 'required', 'on' => 'change-password'),

// code in the right controller's action
$user->scenario = 'change-password'; // set the scenario
$user->attributes = $_POST['User'];
$user->validate(); // if the password is not set, this will result in a validation error

Look at this answer for some more information and links to further reading.

于 2013-01-09T10:42:09.833 回答
0

你读过以下文章吗?

http://www.yiiframework.com/wiki/56/

http://www.yiiframework.com/wiki/161/understanding-safe-validation-rules/

Safe将关联的属性标记为对大量任务是安全的。 On关键字指定登录、注册等场景

于 2013-01-09T10:41:03.090 回答