我是Yii框架和新手的新手。对于在模型中编写的验证规则有一些混淆。例如:
阵列( '邮件', '安全'),
数组('用户名,密码','必需','在'=>'登录,注册'),
1- 安全验证器&的使用是什么?在哪里使用它?
2- on 场景的用途是什么以及如何使用它?假设我已经<=>'on'=&gt;'注册',那么'register'是否为动作名称或其他任何内容。
即使经过大量文件,对我来说仍然不是很清楚。有人可以举例解释。
答案 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/
安全标记相关属性对于大量作业是安全的。 开启关键字指定登录,注册
等方案