【问题标题】:Confusion with validation rules in Yii framework与 Yii 框架中的验证规则混淆
【发布时间】:2013-01-09 10:32:48
【问题描述】:

我是 Yii 框架的新手,对模型内部编写的验证规则有些困惑。例如:
数组('电子邮件','安全'),
array('用户名, 密码', '必填', 'on'=>'登录, 注册'),

1- safe 验证器有什么用?在哪里使用它?
2- on 场景有什么用,如何使用?假设我已经写了 'on'=>'register',那么 'register' 是动作名称还是其他名称。

即使浏览了很多文件,对我来说仍然不是很清楚。谁能举例说明一下。

【问题讨论】:

    标签: yii


    【解决方案1】:

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

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

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

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


    on场景有什么用,怎么用?假设我已经写了 '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
    

    查看this answer 了解更多信息和进一步阅读的链接。

    【讨论】:

    • DCoder:感谢您的解释。只想问一个疑问,什么是'change-password'(我的意思是说它是如何知道它在'change-password'上的)?是表单完成后我们要点击的提交按钮的 id 还是其他?
    • @Workonphp:我更新了描述,如果有帮助请告诉我。
    • DCoder:感谢您的更新。它真的帮助我理解了这个概念。再次感谢!!
    【解决方案2】:

    你读过以下文章吗?

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-30
      • 1970-01-01
      • 2013-06-29
      • 2014-04-10
      • 1970-01-01
      相关资源
      最近更新 更多