gau*_*kum 4 php validation cakephp
我有一个用户模型.在其中,我设置了注册用户时使用的验证.这很好.但是当用户编辑他的个人资料信息时,我不想验证一些字段,如密码,电子邮件等.怎么可能.下面是代码.
<?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'
)
)
);
?>
Run Code Online (Sandbox Code Playgroud)
注册用户时使用上面的内容.但是当用户编辑他的个人资料时,我不允许编辑/更改用户密码.因此,每次编辑配置文件时,它都会检查密码验证.我没有在编辑个人资料页面中添加密码字段,我不想验证密码字段.那么我可以为不同的操作设置不同的验证规则吗?
谢谢.
几种方法:
on
参数仅应用规则来创建或更新操作.unset
验证前模型中不需要的规则.
unset($this->User->validate['password']);
Run Code Online (Sandbox Code Playgroud)使用自定义的验证方法是足够的智能来弄清楚他们是否应适用与否,例如通过检查$this->id
或$data['id']
设置与否.除非你确定自己在做什么,否则不推荐.
使用方法的$fieldlist
参数仅将保存和验证限制为指定的字段.不在列表中的字段既不会保存也不会被验证.非常推荐,因为它还可以防止形式欺骗.save
$this->User->save($this->data, true, array('only', 'certain', 'fields'));
Run Code Online (Sandbox Code Playgroud)