gpt4 book ai didi

php - cakephp:如何在模型中为不同的操作设置多重验证?

转载 作者:可可西里 更新时间:2023-10-31 22:07:35 27 4
gpt4 key购买 nike

我有一个用户模型。在其中,我设置了注册用户时使用的验证。那很好用。但是当用户编辑他的个人资料信息时,我不想验证密码、电子邮件等某些字段。这怎么可能。下面是代码。

<?php
class User extends AppModel{

var $name = 'User';

// used when user registers
var $validate = array(

'login' => array(
'minLength' => array(
'rule' => array('minLength', '6'),
'field' => 'login',
'message' => 'mimimum 6 characters long'
)
),
'password' => array( // don't want to validate in edit profile page
'minLength' => array(
'rule' => array('minLength', '6'),
'field' => 'password',
'message' => 'minimum 6 characters long'
)
),
'email' => array(
array(
'rule' => 'email',
'message' => 'please enter a valid email address'
)
)
);
?>

上面是我注册用户时使用的。但是当用户编辑他的个人资料时,我不允许编辑/更改用户密码。因此每次编辑配置文件时,它都会检查密码验证。我没有在编辑个人资料页面中添加密码字段,我不想验证密码字段。那么我可以为不同的操作设置不同的验证规则吗?

谢谢。

最佳答案

实现此目的的几种方法:

  • 使用on parameter仅将规则应用于创建更新 操作。
  • 在验证之前取消设置模型中不需要的规则。

    unset($this->User->validate['password']);
  • 使用 custom validation methods足够聪明,可以判断他们是否应该申请,例如通过检查是否设置了 $this->id$data['id'] 。除非您确定自己在做什么,否则不推荐。

  • 使用save method$fieldlist 参数将保存和验证限制为仅指定字段。不在列表中的字段既不会被保存也不会被验证。非常推荐,因为它还可以防止表单欺骗。

    $this->User->save($this->data, true, array('only', 'certain', 'fields'));

关于php - cakephp:如何在模型中为不同的操作设置多重验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4075471/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com