CakePHP 能否在控制器中使用验证,然后在 create/update 期间省略验证?

CakePHP Can validations be used in controllers and then omitted during create/update?

我设置了一些验证作为示例,这些验证在控制器中检查 post 的请求信息是否正确。只是一堆简单的验证,比如 minlength、notBlank 等;这一切都有效。虽然有些字段在保存或更新时不使用,但我只想在请求中验证它们然后忘记它们。

例如,在更改密码时,当前密码、新密码和确认密码已在请求中提交,除其他外,它们都应该是必需的,但如果将它们设置为 notBlank,则意味着它们在用于更新的数据中, 但那里应该只需要新密码,而不再需要验证后的其他两个密码。

我知道我可以在我的控制器中调用验证的子集,但我也注意到验证似乎并不特定于特定 save/update 它们是模型范围的,所以看起来你可以' 仅在 save/update 外部使用请求的验证。

有没有办法在 CakePHP 中做到这一点?希望这会类似于 Laravel 的 5.x 请求。

当然,您可以在不保存数据的情况下验证数据,然后在不验证的情况下保存数据。要验证使用 Model::validates() 方法,例如:

$this->YourModel->set($this->request->data);
if($this->YourModel->validates()){
  //Logic if validation succeeded  
}else{
  //Logic if validation didn't succed
}

未经验证保存数据

$this->YoutModel->save(null,false);

如果你检查 cakephp api 你会看到保存方法可以有三个参数,要保存的数据,要验证的字段或指示是否验证的布尔值,以及要保存的字段救球。 更多信息在这里 CakePHP save method and here CakePHP validation in Controller