与Yii框架中的验证规则混淆

时间:2013-01-09 10:32:48

标签: yii

我是Yii框架和新手的新手。对于在模型中编写的验证规则有一些混淆。例如:
阵列( '邮件', '安全'),
数组('用户名,密码','必需','在'=>'登录,注册'),

1- 安全验证器&的使用是什么?在哪里使用它?
2- on 场景的用途是什么以及如何使用它?假设我已经<=>'on'=&gt;'注册',那么'register'是否为动作名称或其他任何内容。

即使经过大量文件,对我来说仍然不是很清楚。有人可以举例解释。

2 个答案:

答案 0 :(得分:5)

  

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

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

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

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


  

在场景中有什么用途以及如何使用它?假设我有'on'=&gt;'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

请查看this answer以获取更多信息以及进一步阅读的链接。

答案 1 :(得分:0)

您是否阅读了以下文章?

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

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

安全标记相关属性对于大量作业是安全的。 开启关键字指定登录,注册

等方案