繁体   English   中英

Lithium PHP框架-提交的模型属性在保存之前消失

[英]Lithium PHP framework - submitted model property disappears before save

我正在开发一个使用Lithium PHP框架构建的项目,并且遇到一个奇怪的问题:

我有两个用于用户的控制器-一个用于网站的前端,一个用于管理面板。 它们都具有edit()方法,该方法调用Users模型的save方法。

问题是这个:

当我尝试在管理面板中更改密码时- $request->data包含confirmPassword POST字段---但---验证规则永远不会触发。 而且,当我尝试在前端注册用户时confirmPassword触发器的验证。

这些方法具有相同的代码:

public function {add / edit} ($request, $user) {
    if (!$request->data) {
        return array(200, $user);
    }
    $success = $user->save();
    return array($success, $user);
}

验证规则在模型中,并且使用自定义验证,该验证在config/bootstrap/validation.php使用以下代码定义:

Validator::add('matchesPassword', function($value, $format, $options) { ...

最后-该网站是使用Lithium PHP框架(对我来说是新的) li3_resources ,并使用li3_resources ,所有控制器和模型都扩展了该Resource类。

那么...此POST字段在哪里消失? ...有什么线索吗? ...

编辑:当我编写public function {add / edit} ($request, $user) {我的意思是两种方法:

public function add($request, $user) { ... 
public function edit($request, $user) { ... 

谢谢。

我找到了问题的原因:) ...

在以前的开发人员在模型中定义的验证规则上,有以下子句:

'on' => 'create'

这导致验证规则在编辑时不会触发。

PS:我想倾倒在确认自身的规则(在这个类- https://github.com/UnionOfRAD/lithium/blob/master/util/Validator.php -在上线469 annonimous功能:

return static::_filter(__FUNCTION__, $params, function($self, $params) {

但倾销从未发生??? ...可能在那里工作-这可以为我节省一些时间...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM